以编程方式创建Visual Studio项目

正如我的问题所说,我想创建一个基于模板的新项目,该模板已经创建了一个经过测试并且工作正常,但是当我尝试在C#代码中执行它时(在mvc3项目中),我有两个问题。

  1. EnvDTE80, EnvDTE90 and EnvDTE100之间的区别是EnvDTE80, EnvDTE90 and EnvDTE100因为我试图用EnvDTE100做这个例子 ,但它不起作用,因为对象处理它的Solution4而不是Solution2Solution4没有相同的行为。
  2. 如何在不使用默认路径的情况下创建项目,而是使用我需要的特定文件夹

UPDATE

这是代码,如果我使用名为EnvDTE80的DLL

  System.Type type = System.Type.GetTypeFromProgID("VisualStudio.DTE.8.0"); Object obj = System.Activator.CreateInstance(type, true); EnvDTE80.DTE2 dte = (EnvDTE80.DTE2)obj; Solution2 _solution = (Solution2)dte.Solution; string projectTemplatePath = @"C:\Documents and Settings\jmachado\Escritorio"; projectTemplatePath =_solution.GetProjectTemplate("",""); <-- looking for some overload to create project based in a specific folder an not from ':\Program Files\Microsoft Visual Studio 8\Common7\IDE\ProjectTemplates\Language.' 

但如果我使用EnvDTE100

  System.Type type = System.Type.GetTypeFromProgID("VisualStudio.DTE.10.0"); Object obj = System.Activator.CreateInstance(type, true); EnvDTE100.DTE2 dte = (EnvDTE100.DTE2)obj; Solution4 _solution = (Solution4)dte.Solution; string projectTemplatePath = @"C:\Documents and Settings\jmachado\Escritorio"; projectTemplatePath =_solution.GetProjectTemplate("",""); <-- looking for some overload to create project based in a specific folder an not from ':\Program Files\Microsoft Visual Studio 8\Common7\IDE\ProjectTemplates\Language.' 

并且说是DTE2没有在EnvDTE100的命名空间中退出

相应地,EnvDTE80,EnvDTE90和EnvDTE100是VS 8.0(2005),9.0(2008)和10.0(2010)的DTE类型库。

从VS2010开始,只有两个DTE根对象接口–DTE2是最新的。 因此,要获取VS 2010的DTE对象,您可以:

 System.Type type = System.Type.GetTypeFromProgID("VisualStudio.DTE.10.0"); Object obj = System.Activator.CreateInstance(type, true); EnvDTE8.DTE2 dte = (EnvDTE100.DTE2)obj; 

请注意,ProgID用于“10.0”,但变量类型仍为EnvDTE8.DTE2

其余的应该在那里工作。 另请注意,如果需要,您始终可以将Solution4 GetProjectTemplateSolution2 (但GetProjectTemplate应直接在Solution4 )。