【问题标题】:How to call a custom Visual Studio Wizard from Command Line?如何从命令行调用自定义 Visual Studio 向导?
【发布时间】:2009-11-04 00:29:06
【问题描述】:

我们有一个使用 DTE 环境编写的 Visual Studio 向导,可以根据一些自定义数据库内容自动生成代码、模板等。现在它会弹出一些对话框,收集信息,然后使用 EnvDTE 类生成代码并对其进行格式化。

鉴于我从可用的对话框中收集了信息,有没有办法调用 devenv 并让它运行向导以自动生成代码?

【问题讨论】:

    标签: c# visual-studio wizard


    【解决方案1】:

    解决方案是使用 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");
    

    【讨论】:

      【解决方案2】:

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

      您可以改为使用 CodeDom 进行代码生成。它不依赖 EnvDTE 或 Visual Studio 中的任何其他东西来生成代码。在我的代码生成器中,我也是从使用 Visual Studio Automation 开始的,但是在批量构建时,我不得不改用 CodeDom 重做它

      【讨论】:

      • 我将不得不查看 /Command 选项。引导整个 Visual Studio 很好,我更关心自动化过程而不是任何事情。理想情况下,我希望它成为构建本身的一部分(构建生成代码,然后构建)。我不介意为 CodeDom 重写它,但我只有 2 天时间分配给整个项目,而重写这么多的代码生成需要一周时间。
      • 更新:查看了所有命令行选项,没有看到执行向导的任何内容,因此我需要将整个向导移动到似乎不起作用的命令行版本使用 EnvDTE。
      • 我在处理 VS 集成 - 包、代码生成、编辑器等方面的所有经验仍然让我感到胃痛。它非常不稳定,并且比其他部分更糟糕。恕我直言,在 CodeDom 中重写它比您想象的路径更可预测。但当然这一切都取决于你必须通过多少代码生成代码
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-20
      • 2015-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多