为什么 Visual Studio 在调试时会要求 cs 文件?

3
我已将dll文件包含在我的项目中,我从库文件夹中引用它,其中也包含dll的pdb文件。当我编译时,我看到dll和pdb文件都被复制到主项目的bin文件夹中。在小型项目上,这很好地工作,并且我可以轻松地调试dll。然而,在更大的项目中,有时候VS会询问特定的cs文件,即使它们的pdb文件已经包含在项目的bin文件夹中。如果我能找到这些cs文件,那就没问题了,但这很烦人。
为什么Visual Studio有时会询问cs文件,有时却不会?
2个回答

5
它会尽力根据其拥有的信息进行操作,但有时信息是不完整的。当它准备放弃时,它会给你提供一个机会,以防你知道得更好。

PDB通常存储文件的路径,就像在调用msbuild构建DLL时一样。如果路径已更改(例如,您在与构建DLL的计算机不同的机器上,或者仅是文件系统上的文件已移动),则路径信息并没有什么用处。

有一个称为源索引的过程,可以将足够的信息嵌入PDB中,以便Visual Studio可以重新定位您的源代码控制系统中的源文件(这样您就可以获得确切的文件,因为它是在构建时的状态),但这通常是发生在构建之后修改PDB的额外步骤。


2
尝试这个(来源于 MSDN论坛):
工具 -> 选项 -> 调试 -> 符号 -> 清空符号高速缓存(按钮)

enter image description here

然后
工具 -> 选项 -> 调试 -> 一般 -> 启用仅调试我的代码(复选框)

enter image description here

并重新开始调试。如果问题是由不包含源代码而只有文件路径的意外第三方组件调试符号引起的,这应该可以解决问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接