如何调试 .Net Core 或 Base class 库 (coreFx) 的源代码?

How can I debug the source code of .Net Core or the Base class libraries (coreFx)?

我正在使用 .NET Core 1.0Visual Studio 2015 Update 3 制作一个简单的 Asp.Net Core MVC 网站。

如何调试我的应用程序和 "Step Into" GitHub 上可用的 .NET Core source code

具体来说,我正在尝试解决从 NuGet 获取的 Microsoft.AspNetCore.Authentication.Facebook 1.0.0 程序集的一个问题。

我在 1 年多前写了 this article 所以有点过时了,但思路还是一样的:

  1. 您从 GitHub 同步到正确的标签。在你的情况下,你可能想要同步到 tag 1.0.0
  2. 通过 运行 build.cmdbuild.sh
  3. 构建该存储库
  4. src 文件夹路径添加到应用程序的 global.json 文件中。例如,如果您在 D:\Security 中克隆了 Security,那么您将 D:/Security/src 添加到 projects 属性 中的 global.json
  5. 重建一切,它应该工作。

PS:如果您使用 VS 并且没有立即看到新代码,请尝试重新启动它。这是一个已知问题,有时它不会接收对 global.json

的更改

还要确保在解决方案级别,您的项目 "configration" 设置为调试。见截图。

(要显示解决方案属性,请在解决方案资源管理器中右键单击 .sln。)

更新以适应新的 VS 2017

2017 年 Visual Studio 15.3.5 及更高版本 我们可以使用 SourceLink 支持来调试 .NET Core 和 ASP.NET Core 源代码。 要启用源 link 支持,只需禁用 仅启用我的代码 并启用 启用源 Link 支持 。 然后启用 Microsoft 符号服务器。


Victors 的答案与 vs 2015.For 一些人正在寻找 vs 2017 的解决方案,
在 vs 2017 中,没有 global.json availble.So 而不是在 global.json 中添加文件夹路径,必须添加并重建项目引用。
Victors 文章中提到的所有其他人与 2015 年的工作方式相同。
git hub 标签和 nuget 包匹配具有相同的版本很重要。

如果您之前使用以前版本的 .NET 调试过应用程序,请删除 %TEMP%/SymbolCache 目录,因为它可能包含过时的旧 PDB。每 Debug .NET and ASP.NET Core source code