VS 2019 - 调试 .NET Framework 源代码

VS 2019 - Debugging .NET Framework Sources

我无法进入 WPF 的源代码 (PresentationFramework.dll)。

我已按照 here 列举的步骤进行操作。

看起来需要一个额外的步骤来将源与 PDB 相关联。

谢谢

编辑

我发现我可以进入 List<T>()。但是,我想要的是调试 TreeView & TreeViewItem.

我唯一的建议是转到 Tools/Options/Debugging 并确保“启用仅我的代码”未选中。

您无法进入编译成 PresentationFramework.dll 的任何源代码的原因是 PresentationFramework.pdb 与您的 GAC 中的 PresentationFramework.dll 版本相对应的符号文件没有任何源文件路径。这正是 Microsoft 构建此特定程序集的特定版本的方式。当他们发布新的 .NET 版本时,他们似乎在某些程序集的 PDB 文件中包含完整的调试信息(连同源文件路径),但在其他程序集的 PDB 文件中忽略了此信息。我不知道他们为什么要这样做。另一方面,您能够进入 List<T> 源代码,因为此 class 驻留在 mscorlib 程序集中,PDB 文件恰好包含源文件路径。

您可以检查符号缓存目录(默认情况下 [your profile]\AppData\Local\Temp\SymbolCache)中的 PDB 文件,看看哪些包含源文件路径,哪些不包含。据我所知,没有官方工具可以检查 PDB 文件,但您可以使用任何文件查看器打开它们,只是要做好它们是二进制文件的准备,所以您看到的大部分都是乱码。但是您仍然可以查看是否有任何类似于文件路径的符号序列(它们通常靠近文件的开头)。

如果您真的想进入 WPF 控件代码,here 描述了一种解决方法(我自己从未尝试过,所以我不能保证)。要点是您将 GAC 中的 PresentationFramework.dll 替换为旧版本,Microsoft 为其构建了一个具有完整调试信息的 PDB,并使其在他们的符号服务器上可用。要使用这种方法,您必须知道您需要哪个版本以及从哪里获得它。