【问题标题】:Why does Visual Studio ask for cs-files when debugging?为什么 Visual Studio 在调试时要求提供 cs 文件?
【发布时间】:2014-04-10 08:37:47
【问题描述】:
我在我的项目中包含了一个 dll 文件。我从一个库文件夹中引用它,其中也包含 dll 的 pdb 文件。当我编译时,我看到 dll 和 pdb 都复制到了主项目的 bin 文件夹中。在小型项目上,这非常有效,我可以毫无问题地调试到 dll 中。然而,有时,在较大的项目中,即使它们的 pdb 文件包含在项目 bin 文件夹中,VS 也会不断要求特定的 cs 文件。如果我能找到那些cs文件就可以了,但这很烦人。
为什么 Visual Studio 有时会要求提供 cs 文件,有时却不要求?
【问题讨论】:
标签:
visual-studio
visual-studio-debugging
pdb-files
【解决方案1】:
它会根据所拥有的信息尽力而为,但有时这些信息并不完整。当它准备放弃时,它会给你提供文件的机会,以防万一你知道得更好。
PDB 通常存储文件的路径,就像调用 msbuild 来构建 DLL 时一样。如果路径已更改(例如,您与构建 DLL 的计算机位于不同的计算机上,或者只是文件系统上的文件已移动),则路径信息不会起到太大作用。
有一个名为 source indexing 的进程可以将足够的信息嵌入到 PDB 中,以便 Visual Studio 可以重新定位源代码控制系统中的源文件(以便您完全获得正确的文件,就像在构建时一样),但这通常是一个额外的步骤,必须在构建发生后修改 PDB。
【解决方案2】:
试试这个(来自MSDN Forum)
工具 -> 选项 -> 调试 -> 符号 -> 空符号缓存(按钮)
然后
工具 -> 选项 -> 调试常规 -> 启用仅我的代码(复选框)
然后重新开始调试。如果它是由不包含源但仅包含文件路径的故事的意外第三方组件调试符号启动的,这应该可以解决问题。