繁体   English   中英

以编程方式创建Visual Studio项目

[英]Create a Visual Studio project programmatically

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

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

更新

这是如果我使用名为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 '<drive>:\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 '<drive>:\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);
EnvDTE80.DTE2 dte = (EnvDTE100.DTE2)obj;

请注意,ProgID用于“ 10.0”,但是变量类型仍然是EnvDTE80.DTE2

其余的应该从那里开始。 还要注意,如果需要,可以始终将Solution4 GetProjectTemplateSolution2 (但是GetProjectTemplate应该直接在Solution4上可用)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM