微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 以编程方式创建Visual Studio项目

我的问题是,我想创建一个新的项目,在一个已经创建测试和工作正常的模板,但我有两个问题,当我试图在C#代码(在mvc3项目中).

> EnvDTE80,EnvDTE90和EnvDTE100之间有哪些区别,因为我试图用EnvDTE100做this example,但是它不起作用,因为对象处理它的Solution4不是Solution2和Solution4没有相同的行为.
>如何创建项目而不使用认路径,但是我需要的特定文件

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 '<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类型库.

只有两个DTE根对象接口,从VS2010到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转换为Solution2(但是GetProjectTemplate应该可以直接在Solution4上使用).

原文地址:https://www.jb51.cc/csharp/97058.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐