如何调试基于IWizard的项目模板

时间:2013-12-02 10:45:05

标签: visual-studio debugging project-template

我使用Export Template Wizard导出了Visual Studio模板。该模板需要一些用户输入,所以我添加了一个向导程序集,它可以按照它应该的方式调用,除了一些小的东西,所以我需要调试。

我发现了一个关于如何在this MSDN thread中进行调试的可理解的摘要,但无法按照描述使其工作。这是我做的:

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

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

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

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

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

    我试图按照MSDN帖子中描述的方式通过常规方式导出模板(作为 ZIP ),然后修改ZIP中的VSTemplate以引用向导程序集,但我收到的是一条错误消息,指出无法找到向导dll(甚至在将其添加到GAC之后)。是的,它被强烈命名并签名。

    有人能指出我可以帮助我调试IWizard实现的方向吗?

1 个答案:

答案 0 :(得分:2)

我使用向导调试Item模板的方式如下......

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

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

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

现在您参考项目模板。您可以将此帖子改编为该帖子,或者使用项目模板作为您尝试在项目模板上实现的测试工具。

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

我在VS2012中这样做,这可能比VS2010有所改进。我现在已经删除了我的VS2010所以无法检查。