【发布时间】:2017-05-31 11:56:26
【问题描述】:
最近几天我一直hunting down a problem - 结论:
我的 Visual Studio 2017 调试器无法在 .NET Framework 项目中使用“可移植”格式的 PDB。
对于可移植格式,我的意思是转到项目的设置,然后转到 Build -> Advanced,然后在 Debugging information 下选择 portable。
当我开始调试这样构建的 .NET Framework 项目时,断点不会受到影响。
当我暂停调试器并寻找它没有加载符号的原因时,它说(在Symbol load information 下):
不支持PDB格式
我可以用任何 .NET Framework 项目重现这一点。目标框架似乎并不重要。我尝试了 .NET 4.5.2 和 4.6.2。
不过,它适用于 .NET Core 项目。
现在,奇怪的是完全相同的项目在另一台计算机上运行良好。
因此,我的计算机似乎缺少某些内容或配置错误。但我的谷歌搜索没有出现任何东西。任何想法如何解决这个问题?
【问题讨论】:
-
水晶球说你使用了错误的调试引擎。工具 > 选项 > 调试 > 常规 > 确保未勾选“使用托管兼容模式”。请考虑使用“可移植”格式还不是最佳选择,并且当您在项目中也有 C++/CLI 代码时永远不应该使用它,现在它真的只需要在需要调试的 .NETCore 项目上使用Linux 或 MacOS。
-
@HansPassant 你的水晶球是对的。我从来没有(有意识地)看到这个选项。不知道为什么它被启用。通过禁用它,它现在可以工作了。也许您应该将评论转换为答案:)
-
请注意,.NET“桌面”框架本身(至少在 4.7.1 版之前)无法读取可移植的 pdb 文件。您可以将它们创建为构建的一部分,并且调试可能会起作用,但是在为异常创建回溯时,运行时将无法包含源文件名和行号。因此,为了获得最佳调试/运行时体验,对普通框架使用“完整”pdb 类型,对网络核心/标准使用可移植。
-
@HansPassant 有答案,或者至少它对我有用。他绝对应该把它变成一个答案:) 谢谢汉斯!
标签: c# .net visual-studio-2017 visual-studio-debugging pdb-files