我使用Export Template Wizard导出了Visual Studio模板。该模板需要一些用户输入,所以我添加了一个向导程序集,它可以按照它应该的方式调用,除了一些小的东西,所以我需要调试。
我发现了一个关于如何在this MSDN thread中进行调试的可理解的摘要,但无法按照描述使其工作。这是我做的:
在向导项目中(VS以管理员身份运行)...
ProjectFinishedGenerating
方法设置项目设置 - >构建 - >输出路径
Program Files\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\
设置项目设置 - >调试 - >启动对外部程序的操作(Visual Studio 2010)
此时 - 正如预期的那样 - 一个新的VS 2010实例打开了,但没有任何加载。因此,无论我的断点设置在哪里,它们都不会被击中。我想这可以追溯到这样一个事实:VSIX模板包含自己的向导DLL副本,没有pdbs,所以可能调试不适用于VSIX。
我试图按照MSDN帖子中描述的方式通过常规方式导出模板(作为 ZIP ),然后修改ZIP中的VSTemplate以引用向导程序集,但我收到的是一条错误消息,指出无法找到向导dll(甚至在将其添加到GAC之后)。是的,它被强烈命名并签名。
有人能指出我可以帮助我调试IWizard实现的方向吗?
答案 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所以无法检查。