我正在尝试开发我的第一个visual studio扩展项目,我安装了VS10 SDK并且能够创建一个新项目并且可以构建它,但是当我尝试调试符号时没有加载。我知道我可以调试到VSIX项目,因为我已经在线下载了一个示例项目,并且它已经加载了符号并且断点得到了很好的http://weshackett.com/2009/11/configure-vsix-project-to-enable-debugging/)。 所以必须特别关注我创建VSIX项目的方式(也许!)。 我注意到的一件事是dll和文件没有被复制到本地“应用程序数据”区域,只复制清单,而对于示例项目,所有文件都被复制,包括dll。我比较了两者之间的项目设置,它们都是相同的。 我希望这是有道理的,如果我能提供更多细节,请告诉我......
答案 0 :(得分:13)
好的,我设法让它运转起来。为了做到这一点,我不得不卸载vsix项目并将文件编辑为xl文档。
从项目文件中删除以下行:
<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 \”文件夹中。
答案 1 :(得分:1)
我有一个相同的问题-调试将开始,但是无论我在哪里设置一个断点,我都会看到它“无用”并且带有“断点不会被击中”的注释。我在这里检查了其他答案中的所有内容,然后在一个插件项目存储库(new report in January 2020)中找到了一个“贡献者指南”。
那么对我有帮助的是以下几点:打开项目属性,并在“调试”选项卡上确保:
“开始操作”设置为“启动外部程序”,并且路径与devenv.exe
的路径匹配-例如“ C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Professional \ Common7 \ IDE \ devenv.exe”-默认情况下就是这样。
“开始选项”的“命令行参数”设置为/rootsuffix Exp
-默认情况下缺少,我必须添加它。。
因此,一旦我添加了/rootsuffix Exp
,它便开始工作-下次我按F5键时,插件代码中的断点将起作用。
答案 2 :(得分:0)
我在Visual Studio 2017中遇到了类似问题。 @Rubans描述的选项似乎不是必需的了吗?
在当前的构建配置中(很可能是Debug
),您需要确保在Vsix属性页中选中了Deploy VSIX content to experimental instance for debugging
:
答案 3 :(得分:0)
我有同样的问题,在Visual Studio 2019中,调试命令运行参数为/rootsuffix Roslyn
在新的Visual Studio实例中,我打开Extensions
→Manage Extensions
→installed
我可以看到我项目的vsix扩展名,但是它是错误版本;
因此,我搜索了安装了新的Visual Studio实例的源vsix文件
幸运的是,在调试输出窗口中,通过[ProjectName].DLL
搜索,我找到了正确的路径;
看起来像:
Exception thrown: 'System.OperationCanceledException' in mscorlib.dll
'devenv.exe' (CLR v4.0.30319: DefaultDomain): Loaded 'C:\USERS\我零0七\APPDATA\LOCAL\MICROSOFT\VISUALSTUDIO\16.0_E9F147B4ROSLYN\EXTENSIONS\我零0六\[ProjectName]\1.0\[ProjectName].dll'. Symbols loaded.
'devenv.exe' (CLR v4.0.30319: DefaultDomain): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Reflection\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Reflection.dll'.
Exception thrown: 'System.OperationCanceledException' in mscorlib.dll
我将所有文件(路径类似:C:\USERS\我零0七\APPDATA\LOCAL\MICROSOFT\VISUALSTUDIO\16.0_E9F147B4ROSLYN\EXTENSIONS\我零0六\[ProjectName]\1.0\[ProjectName].dll
)替换为vsix项目输出文件,现在效果很好
答案 4 :(得分:0)
偶然发现了如何在vs 2017 15.9.20中修复它
暂时:在新VS中卸载扩展程序,通过F5重新运行新VS,然后清理并重建解决方案,然后再次由F5运行。
在卸载扩展程序后重新运行VS时,新的VS“理解”您的扩展程序已被删除。之后,您将重建代码并将其“放入”新的VS。
详细:
答案 5 :(得分:0)
在那儿..在VS-2019中,我正在开发一个运行良好的VSIX Async,但是在某个时候,Visual Studio实验版本停止以调试模式加载我的VSIX。
我不确定根本原因,但恰好与在Visual Studio的同一解决方案中打开第二个VSIX项目模板相吻合。不知道这是否与问题有关,但是在第一次运行时,我发现两个VSIX-es均已加载到实验版会话中。那时,我关闭并重置了实验版本。在下次运行时,调试时似乎没有VSIX被加载到实验版本中。..非常令人沮丧!
我找到的解决方案,随便摆弄
对我来说,上述顺序使问题消失了。 VSIX已加载。