我正在尝试开发我的第一个 Visual Studio 扩展项目,我安装了 VS10 SDK 并且能够创建一个新项目并且可以很好地构建它,但是当我尝试调试符号时没有加载。我知道我可以调试到 VSIX 项目,因为我已经在线下载了一个示例项目并且它的符号被加载并且断点被很好地击中http://weshackett.com/2009/11/configure-vsix-project-to-enable -调试/)。所以一定与我创建 VSIX 项目的方式有关(也许!)。我注意到的一件事是 dll 和文件没有被复制到本地“应用程序数据”区域,只有清单被复制,而对于示例项目,所有文件都被复制,包括 dll。我已经比较了两者之间的项目设置,它们都是相同的。我希望这是有道理的,如果我可以提供更多详细信息,请告诉我...
7 回答
好的,我设法让它工作。为此,我必须卸载 vsix 项目并将文件编辑为 XML 文档。
从项目文件中删除以下行:
<IncludeAssemblyInVSIXContainer>
false
</IncludeAssemblyInVSIXContainer>
<IncludeDebugSymbolsInVSIXContainer>
false
</IncludeDebugSymbolsInVSIXContainer>
<IncludeDebugSymbolsInLocalVSIXDeployment>
false
</IncludeDebugSymbolsInLocalVSIXDeployment>
<CopyBuildOutputToOutputDirectory>
false
</CopyBuildOutputToOutputDirectory>
<CopyOutputSymbolsToOutputDirectory>
false
</CopyOutputSymbolsToOutputDirectory>
或将它们设置为 true:
<IncludeAssemblyInVSIXContainer>
true
</IncludeAssemblyInVSIXContainer>
<IncludeDebugSymbolsInVSIXContainer>
true
</IncludeDebugSymbolsInVSIXContainer>
<IncludeDebugSymbolsInLocalVSIXDeployment>
true
</IncludeDebugSymbolsInLocalVSIXDeployment>
<CopyBuildOutputToOutputDirectory>
true
</CopyBuildOutputToOutputDirectory>
<CopyOutputSymbolsToOutputDirectory>
true
</CopyOutputSymbolsToOutputDirectory>
如果它们不存在,则将它们添加到 ... 节点下。
删除这些行并重建解决方案后,dll 和 pdb 现在按预期复制到 bin\debug 文件夹以及“AppData\Local\Microsoft\VisualStudio\10.0Exp\Extensions\”文件夹。
去过那里.. 在 VS-2019 中,我正在开发一个运行良好的 VSIX 异步,但是在某个时候,Visual Studio 实验版停止在调试模式下加载我的 VSIX。
我不确定根本原因,但它恰逢在 Visual Studio 的同一解决方案中打开第二个 VSIX 项目模板。不知道这是否与问题有关,但在第一次运行时,我发现两个 VSIX-es 都加载到了实验版本会话中。那时,我关闭并重置了实验版。在接下来的运行中,在调试时似乎没有 VSIX 加载到实验版本中......非常令人沮丧!
我找到的解决方案,摆弄
- 关闭任何 Visual Studio 实例
- 使用“开始”菜单中的命令行工具重置 Visual Studio 实验版。
- 打开VS,加载你的 VSIX 解决方案
- 清理您的 VSIX 解决方案
- 切换到发布模式(是的,这样做..)
- 重建解决方案然后运行
- 在 Just my Code 警告弹出窗口中,选择 Continue Debugging
- 实验版现在将从您的 VSIX 开始!它已加载!
- 调试时发布模式不方便。关闭 Exp 版本您将返回 VSIX 解决方案
- 切换回调试模式
- 再次运行
对我来说,上面的顺序让问题消失了。VSIX 已按应有的方式加载。
我有同样的问题 - 调试将开始,但无论我在哪里设置断点,我都会看到它“无用”并且带有“断点不会被命中”注释。我在这里检查了其他答案中的所有内容,然后在一个插件项目存储库中找到了“贡献者指南”(特定版本的永久链接)。
所以帮助我的是以下内容:打开项目属性,并在“调试”选项卡上确保:
“启动操作”设置为“启动外部程序”,并且路径与路径匹配
devenv.exe
- 例如“C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\devenv.exe” - 那就是默认情况下是什么。“开始选项”将“命令行参数”设置为
/rootsuffix Exp
- 默认情况下缺少,我必须添加它。
所以一旦我添加/rootsuffix Exp
它就会开始工作 - 下次我按下 F5 插件代码中的断点就会工作。
意外发现如何在 vs 2017 15.9.20 中修复它
很快:在新 VS 中卸载您的扩展,按 F5 重新运行新 VS,然后清理并重建解决方案,然后再次按 F5 运行。
当您在卸载扩展程序后重新运行 VS 时,新的 VS “理解”您的扩展程序已被删除。之后,您重建代码并将其“放入”新的 VS 中。
详细:
- 运行 F5,在新 VS 中转到 Extensions 并卸载您的扩展
- 关闭新VS
- 在打开的卸载 VSIX 窗口中 - 卸载您的扩展
- 不要改变任何东西,只需按 F5 重新运行代码,检查是否在新启动的 VS 中删除了扩展,关闭新 VS
- 在您的编码中 VS - 清洁解决方案
- 重建
- 由F5运行,享受
我有同样的问题,在 Visual Studio 2019 中,调试命令运行参数是/rootsuffix Roslyn
我尝试更新项目并重建;但它不起作用。幸运的是,我找到了另一种调试方法。那就是unitTest
。在由 vsix 模板创建的最新解决方案中;它包含 uniteTests 项目。
在testmethod中,可以调用VerifyCSharpc
方法进行测试Diagnostic
,调用VerifyCSharpFix
方法进行测试Fix
;当您调试 unitTest 时,您可以点击正确的断点
您可以尝试重置 Visual Studio Experimental(它适用于我)。转到开始菜单 -> Visual Studio 2019 -> 重置 Visual Studio 2019 实验实例
(每个 Visual Studio 版本都有它的链接)