我们有一个使用 DTE 环境编写的 Visual Studio 向导,可以根据一些自定义数据库内容自动生成代码、模板等。现在它会弹出一些对话框,收集信息,然后使用 EnvDTE 类生成代码并对其进行格式化。
鉴于我从可用的对话框中收集了信息,有没有办法调用 devenv 并让它运行向导以自动生成代码?
我们有一个使用 DTE 环境编写的 Visual Studio 向导,可以根据一些自定义数据库内容自动生成代码、模板等。现在它会弹出一些对话框,收集信息,然后使用 EnvDTE 类生成代码并对其进行格式化。
鉴于我从可用的对话框中收集了信息,有没有办法调用 devenv 并让它运行向导以自动生成代码?
对此的答案是使用 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 重做它