Mat*_*att 6 c# com-interop visual-studio visual-studio-2012
我关注如何为VS2010 创建项目的Stack Overflow帖子,希望它能指向正确的方向,但它不包括创建VS2012项目或解决方案.
我还探讨了使用SLNTools,但我没有看到如何从头开始创建新的解决方案.
最后,我想以编程方式创建3-4个VS2012项目,然后将它们添加到也以编程方式创建的解决方案中.
我尝试了一个基于Stack Overflow帖子的解决方案,但是我得到了一个奇怪的错误.这是代码:
Type typeDTE = Type.GetTypeFromProgID("VisualStudio.DTE.11.0");
var dte = (DTE)Activator.CreateInstance(typeDTE, true);
var sln = (Solution2)dte.Solution;
sln.Create(@"D:\Visual Studio\Projects","Test");
Run Code Online (Sandbox Code Playgroud)
这是错误:

Jim*_*mmy 10
这对我有用(VS2012 Ultimate):
static void Main(string[] args)
{
System.Type type = System.Type.GetTypeFromProgID("VisualStudio.DTE.11.0");
Object obj = System.Activator.CreateInstance(type, true);
EnvDTE.DTE dte = (EnvDTE.DTE)obj;
dte.MainWindow.Visible = true; // optional if you want to See VS doing its thing
// create a new solution
dte.Solution.Create(@"C:\NewSolution\", "NewSolution");
var solution = dte.Solution;
// create a C# WinForms app
solution.AddFromTemplate(@"C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ProjectTemplatesCache\CSharp\Windows\1033\WindowsApplication\csWindowsApplication.vstemplate",
@"C:\NewSolution\WinFormsApp", "WinFormsApp");
// create a C# class library
solution.AddFromTemplate(@"C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ProjectTemplatesCache\CSharp\Windows\1033\ClassLibrary\csClassLibrary.vstemplate",
@"C:\NewSolution\ClassLibrary", "ClassLibrary");
// save and quit
dte.ExecuteCommand("File.SaveAll");
dte.Quit();
}
Run Code Online (Sandbox Code Playgroud)
[编辑:]看看HKCR,看起来有一个VisualStudio.DTE(没有.11.0)将指向最新版本的VS. 因此,在我的VS2012和VS2013机器上,它将使用后者.
| 归档时间: |
|
| 查看次数: |
3793 次 |
| 最近记录: |