我想进入 Microsoft 的源代码,但不能。
我按照配置 Visual Studio 进行调试中的说明进行操作。特别是,我禁用了“仅启用我的代码”并启用了“启用.NET Framework 源步进”。最后,将源符号位置设置为“http://referencesource.microsoft.com/symbols”。
但是,当我双击堆栈上的框架项时,我得到一些汇编代码,而不是 C# 代码。此外,“转到源代码”菜单项也被禁用。
我正在使用 Visual Studio 2008 SP1 和 .NET 3.5 SP1。我为下载的内容创建了一个全新的文件夹。我得到一些 pdb 文件,但没有 C# 文件。
我查看了配置 Visual Studio 以调试 .NET Framework 源代码并安装了路径。没什么区别。我正在尝试WPF的源代码。 pdb 已下载,因此看起来 Microsoft 支持这些。
有什么技巧可以解决这个问题吗?
据我观察,.NET 框架使用参考源单步执行,与随处可见的指南配合得很好。使用 VS SP1,您甚至不必添加参考源服务器的路径。
但问题是版本不匹配。框架程序集已使用 .NET 3.5 SP1、Vista SP2、Windows 7 进行更新,但其参考源 PDB 尚未提供。 相应的参考源论坛似乎也已经死了。我记得读到他们花了更长的时间来推出最初的符号,因为他们构建了一个基础设施,可以让他们快速推出新版本。要么这并没有真正发生,要么他们没有使用它。
并非 .NET 框架的所有部分都可作为参考源,但 Shawn Burke 的博客配置 Visual Studio 以调试 .NET 框架源代码中描述了这些部分(以及启动和运行它的步骤)。 .
更新:嗯。尽管它曾经可以工作,但它在我的机器上也坏了。奇怪。
我对 VisualStudio 2022 应用了这些步骤
"Microsoft Symbol Servers"
启用它"Enable Source Link Support"
旁边的框以启用它"Enable Just My Code"
可将其禁用。Enable source server support
旁边的框以
启用它。开始调试
由于符号和源文件是从 Microsoft 的服务器下载的,因此您需要有效的互联网连接。现在在您希望开始调试的 .net 代码中设置一个断点。完成上述步骤后首次在调试模式下运行应用程序后,Visual Studio 可能需要一些时间从 Microsoft 服务器下载必要的符号和源文件(参见图 3)。后续的调试会话应该会更快。
当断点命中属于 .NET Framework 一部分的代码时,您选择
step into
。如果 .net 代码是 property or operator (e.g.: ?)
,则会出现一个对话框,提示您显示 “Your step-into request resulted in an automatic step-over of a property or operator.”
。因此 Visual Studio 不会单步执行该代码。如果您还想进入 Property 或 Operator 那么
“Step over properties and operators (Managed only)”
选项才能禁用它,如图2或step into specific
,如图 4 所示。