【问题标题】:How to debug IWizard-based project template如何调试基于 IWizard 的项目模板
【发布时间】:2013-12-02 10:45:05
【问题描述】:

我已经使用Export Template Wizard 导出了一个 Visual Studio 模板。该模板需要一些用户输入,所以我添加了一个 Wizard 程序集,它会以应有的方式被调用,除了一些小事情,所以我需要调试。

我在this MSDN thread 中找到了关于如何调试的相当容易理解的摘要,但无法按照描述的那样工作。这是我所做的:

在向导项目中(VS 以管理员身份运行)...

  1. 在我的向导的 ProjectFinishedGenerating 方法中设置断点
  2. 设置项目设置->构建->输出路径

    Program Files\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\

  3. 设置项目设置 -> 调试 -> 对外部程序启动操作 (Visual Studio 2010)

  4. 按 F5 启动调试器

此时 - 正如预期的那样 - 一个新的 VS 2010 实例打开,但没有加载任何内容。所以,无论我在哪里设置断点,它们都不会被击中。我想这可以追溯到 VSIX 模板包含它自己的向导 DLL 副本,没有 pdbs,因此调试可能不适用于 VSIX。

我试图通过以常规方式导出模板(作为 ZIP),然后修改 ZIP 中的 VSTemplate 以引用向导,从而使其按照 MSDN 帖子中描述的方式工作程序集,但我得到的只是一条错误消息,指出找不到向导 dll(即使在将其添加到 GAC 之后也找不到)。是的,它有很强的命名和签名。

谁能给我指出一个可以帮助我调试 IWizard 实现的方向?

【问题讨论】:

    标签: visual-studio debugging project-template


    【解决方案1】:

    我用Wizard调试Item模板的方式如下...

    创建一个包含 VSIX 项目的解决方案。将项目项目添加到解决方案;向解决方案添加一个将成为 IWizard 的类库。将 VSIX 项目设置为启动。

    现在在一个相近的路径上创建一个新的解决方案。添加一个将成为调试解决方案的控制台应用程序。

    在 VSIX 解决方案的属性页面中,指向“调试”选项卡,使用命令行 devenv.exe /rootsuffix exp ....\Debugging.sln 或类似的命令启动到另一个 devenv.exe 副本。现在,当您按下 F5 时,Exp Int 将启动,您可以在 Wizard 类库中使用断点将项目模板添加到 debugging.sln。

    现在您指的是项目模板。您可以根据此调整这篇文章,或使用项目模板作为测试工具,以测试您在项目模板上尝试实现的目标。

    如果您需要一个如何设置的示例,请使用 DSL 语言模板,选择 MinLang 并查看已创建的内容。您将看到一个 DSL 项目、一个 VSIX 的 DSLPackage 以及磁盘上的调试解决方案。

    我在 VS2012 中执行此操作,这可能比 VS2010 有所改进。我现在已经删除了我的 VS2010,所以无法检查。

    【讨论】:

      猜你喜欢
      • 2016-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-08
      • 1970-01-01
      • 2020-02-02
      • 1970-01-01
      相关资源
      最近更新 更多