使用“VisualStudio.DTE.10.0”创建解决方案并添加项目

发布于 2024-11-26 13:51:59 字数 417 浏览 0 评论 0原文

我正在尝试创建 VS2010 解决方案并从独立应用程序(而不是加载项)添加项目。我可以创建 VS2010 的实例,但我无法确定如何正确创建项目...我只能找到如何使用 EnvDTE80 对象创建项目的示例,这稍后会导致异常,因为该项目文件的格式较旧,需要升级。我有这个:

EnvDTE80.DTE2 dte2;
object obj;
System.Type t;
t = System.Type.GetTypeFromProgID("VisualStudio.DTE.10.0", true);
obj = System.Activator.CreateInstance(t, true);
dte2 = (EnvDTE80.DTE2)obj;

我正在寻找相当于“EnvDTE100.DTE2”之类的东西,但不知道如何到达那里。

谢谢

I'm trying to create a VS2010 solution and add a project from a stand-alone app (not an add-in). I can create an instance of VS2010, but I'm not able to determine how to create a project properly...I can only find an example of how to create a project using the EnvDTE80 object, which later causes an exception because the project file is in an earlier format and needs to be upgraded. I have this:

EnvDTE80.DTE2 dte2;
object obj;
System.Type t;
t = System.Type.GetTypeFromProgID("VisualStudio.DTE.10.0", true);
obj = System.Activator.CreateInstance(t, true);
dte2 = (EnvDTE80.DTE2)obj;

What I'm looking for is the equivalent of something like "EnvDTE100.DTE2" but don't know how to get there.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一城柳絮吹成雪 2024-12-03 13:51:59

您不必通过 DTE 对象。对对象解决方案4的处理不同,你应该这样做

Type latestSolution = Type.GetTypeFromProgID("VisualStudio.10.0", true);
EnvDTE100.Solution4 vsSolution = (EnvDTE100.Solution4)Activator.CreateInstance(latestSolution, true);

You do not have to go via DTE object. The treatment to the object solution4 it's different you should do this

Type latestSolution = Type.GetTypeFromProgID("VisualStudio.10.0", true);
EnvDTE100.Solution4 vsSolution = (EnvDTE100.Solution4)Activator.CreateInstance(latestSolution, true);
囚我心虐我身 2024-12-03 13:51:59

我想我正在做类似的事情,我有一个应用程序,它创建一个解决方案并从我在 VS2010 中创建的模板加载两个项目。你是对的,即使在 VS2010 中,似乎一切仍然使​​用 EnvDTE80,但随后我们使用它来创建 2010 解决方案:

System.Type type = System.Type.GetTypeFromProgID("VisualStudio.DTE.10.0");
Object obj = System.Activator.CreateInstance(type, true);
EnvDTE80.DTE2 dte2 = (EnvDTE80.DTE2)obj;
EnvDTE100.Solution4 soln = (EnvDTE100.Solution4)dte2.Solution;

然后你可以调用 soln 对象上的方法来创建你的项目(在我的例子中是 AddFromTemplate)。

I think I'm doing something similar, I have a application that creates a solution and loads two projects from templates that I created in VS2010. You're right in that it seems everything still uses the EnvDTE80, even in VS2010, but then we use it to create a 2010 solution:

System.Type type = System.Type.GetTypeFromProgID("VisualStudio.DTE.10.0");
Object obj = System.Activator.CreateInstance(type, true);
EnvDTE80.DTE2 dte2 = (EnvDTE80.DTE2)obj;
EnvDTE100.Solution4 soln = (EnvDTE100.Solution4)dte2.Solution;

Then you can call methods on the soln object to create your project (in my case its AddFromTemplate).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文