gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 09:11:13 26 4
gpt4 key购买 nike

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

  1. EnvDTE80、EnvDTE90 和 EnvDTE100 之间有哪些区别,因为我尝试做 this example使用 EnvDTE100 但它不起作用,因为对象处理它是 Solution4 而不是 Solution2 并且 Solution4 没有相同的行为。
  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 类型库。

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

关于c# - 以编程方式创建 Visual Studio 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8790528/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com