如何进入微软的.NET框架源代码?

问题描述 投票:0回答:3

我想进入 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 支持这些。

有什么技巧可以解决这个问题吗?

c# .net visual-studio-2008 debugging
3个回答
3
投票

据我观察,.NET 框架使用参考源单步执行,与随处可见的指南配合得很好。使用 VS SP1,您甚至不必添加参考源服务器的路径。

但问题是版本不匹配。框架程序集已使用 .NET 3.5 SP1、Vista SP2、Windows 7 进行更新,但其参考源 PDB 尚未提供。 相应的参考源论坛似乎也已经死了。我记得读到他们花了更长的时间来推出最初的符号,因为他们构建了一个基础设施,可以让他们快速推出新版本。要么这并没有真正发生,要么他们没有使用它。


2
投票

并非 .NET 框架的所有部分都可作为参考源,但 Shawn Burke 的博客配置 Visual Studio 以调试 .NET 框架源代码中描述了这些部分(以及启动和运行它的步骤)。 .

更新:嗯。尽管它曾经可以工作,但它在我的机器上也坏了。奇怪。


0
投票

我对 VisualStudio 2022 应用了这些步骤

  • 启用 Microsoft 符号服务器: 允许 Visual Studio 自动从微软的服务器下载符号。 (看 图。1) 工具 > 选项 > 调试 > 符号。勾选旁边的方框
    "Microsoft Symbol Servers"
    启用它
  • 启用源链接支持(Visual Studio 2017 及更高版本):此 功能允许您下载并单步执行源代码 支持源链接的存储库。 (见图 2)工具 > 选项 > 调试 > 常规 > 选中
    "Enable Source Link Support"
    旁边的框以启用它
  • 仅禁用我的代码:此选项允许调试器单步执行 不属于您的项目的代码,包括 .NET Framework 代码。 (见图 2)工具 > 选项 > 调试 > 常规 > 取消选中该框 旁边的
    "Enable Just My Code"
    可将其禁用。
  • 启用源服务器支持:此选项允许调试器检索源代码文件(例如您可以使用的 .NET Framework) 本地没有源代码)来自 Microsoft 参考源 调试期间的服务器。 (见图2)工具>选项>调试> 常规 > 选中
    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 所示。

© www.soinside.com 2019 - 2024. All rights reserved.