【发布时间】:2009-11-04 00:29:06
【问题描述】:
我们有一个使用 DTE 环境编写的 Visual Studio 向导,可以根据一些自定义数据库内容自动生成代码、模板等。现在它会弹出一些对话框,收集信息,然后使用 EnvDTE 类生成代码并对其进行格式化。
鉴于我从可用的对话框中收集了信息,有没有办法调用 devenv 并让它运行向导以自动生成代码?
【问题讨论】:
标签: c# visual-studio wizard
我们有一个使用 DTE 环境编写的 Visual Studio 向导,可以根据一些自定义数据库内容自动生成代码、模板等。现在它会弹出一些对话框,收集信息,然后使用 EnvDTE 类生成代码并对其进行格式化。
鉴于我从可用的对话框中收集了信息,有没有办法调用 devenv 并让它运行向导以自动生成代码?
【问题讨论】:
标签: c# visual-studio wizard
解决方案是使用 DTE2 界面的 Visual Studio 自动化。例如,我用
创建了一个新的 Visual Studio 实例Type t = Type.GetTypeFromProgID("VisualStudio.DTE.9.0", true);
object obj = System.Activator.CreateInstance(t, true);
m_DTEInstance = obj as DTE2;
然后你可以做一些事情,比如创建一个新的解决方案:
Solution2 solution = (Solution2)m_DTEInstance.Solution;
solution.Create(OutputDirectory, Namespace + ".sln");
【讨论】:
您当然可以从命令行运行 Visual Studio。你甚至可以让它执行一个命令 (devenv /Command ...),但这仍然意味着引导整个 Visual Studio。如果这是您想要的,它几乎不适合在批处理模式下运行。
您可以改为使用 CodeDom 进行代码生成。它不依赖 EnvDTE 或 Visual Studio 中的任何其他东西来生成代码。在我的代码生成器中,我也是从使用 Visual Studio Automation 开始的,但是在批量构建时,我不得不改用 CodeDom 重做它
【讨论】: