C# 如何从命令行调用自定义Visual Studio向导?

C# 如何从命令行调用自定义Visual Studio向导?,c#,visual-studio,wizard,C#,Visual Studio,Wizard,我们有一个使用DTE环境编写的VisualStudio向导,可以自动生成代码、模板等。。基于一些自定义数据库的东西。现在,它打开一些对话框,收集信息,然后使用EnvDTE类生成代码并格式化它 既然我有从对话框收集的信息,有没有办法调用devenv并让它运行向导来自动生成代码?您当然可以从命令行运行Visual Studio。您甚至可以让它执行命令(devenv/command…),但这仍然意味着要引导整个Visual Studio。如果这是您想要的,那么它几乎不适合在批处理模式下运行 您可以改为

我们有一个使用DTE环境编写的VisualStudio向导,可以自动生成代码、模板等。。基于一些自定义数据库的东西。现在,它打开一些对话框,收集信息,然后使用EnvDTE类生成代码并格式化它


既然我有从对话框收集的信息,有没有办法调用devenv并让它运行向导来自动生成代码?

您当然可以从命令行运行Visual Studio。您甚至可以让它执行命令(
devenv/command…
),但这仍然意味着要引导整个Visual Studio。如果这是您想要的,那么它几乎不适合在批处理模式下运行


您可以改为使用CodeDom生成代码。它不依赖EnvDTE或visualstudio中的任何其他工具来生成代码。在我的代码生成器中,我也从使用Visual Studio Automation开始,但是当涉及到批处理构建时,我必须使用CodeDom来重新创建它。对此的答案是使用DTE2接口的Visual Studio Automation。例如,我使用创建了一个新的VisualStudio实例

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");

我必须查看/Command选项。引导整个VisualStudio很好,我更关心的是过程的自动化。理想情况下,我希望它成为构建本身的一部分(构建生成代码,然后生成代码)。我不介意为CodeDom重写它,但我只为整个项目分配了2天的时间,重写这一数量的代码生成将需要一周的时间。更新:查看了所有命令行选项,没有看到执行向导的任何内容,因此,我需要将整个向导移动到一个命令行版本,该版本似乎不适用于EnvDTE。凭借我处理VS集成的所有经验,包、代码生成、编辑器等。使用自动化仍然让我心痛不已。它是非常不稳定的,并且记录的情况甚至比它的其他部分更糟。我认为在CodeDom中重写它比你想象中的路径更容易预测。但当然,这一切都取决于您必须剪切的代码生成代码的数量