Visual Studio 2017中使用SourceLink除錯ASP.NET Core原始碼
背景
當我們在學習ASP.NET Core或者除錯ASP.NET Core程式的時候,有時候需要除錯底層程式碼,但是當我們在Visual Studio中除錯程式的時候,由於一些基礎庫或者第三方庫缺少pdb檔案,所以除錯這些庫的程式碼的時候,會出現斷點不能進去的情況。
例如,在如下程式碼中,我們希望除錯一下View()方法,看看其中的內部實現
但是當我們點選F11之後,程式會直接跳到下一步
Source Link
SourceLink是一組用於描述可嵌入到符號、二進位制檔案和包中的原始碼控制元資料的包和規範。官網連結:https://github.com/dotnet/sourcelink
SourceLink當前支援的原始碼來源
- Github
- Azure DevOps(VSTS)
- TFS
- Gitlab
- Bitbucket
這裡個人理解就是如果你除錯的程式集是通過Nuget匯入的,並且該程式集的原始碼是寄存在Github, VSTS等原始碼平臺中的,使用Source Link,除錯階段就會自動從原始碼平臺下載指定程式碼,並進入斷點除錯
標註:這裡需要引入.NET Symbols的概念,我對這個理解的不是太深,希望有大牛給解釋一下, 我後續再做補充。相關文章Publishing and Consuming Symbols and Source for Debugging
如何在Visual Studio 2017中使用Source Link
Visual Studio 2017 15.3以上版本中已經集成了Source Link, 具體開啟方式如下
首先在 Options > Debugging > General中關閉Just My Code, 並啟用Enable Source Link Support
然後在 Options > Debugging > Symbols中啟用Microsoft Symbol Servers
最終效果
下面我們建立一個預設的asp.net core mvc站點,並以除錯方式啟動專案。 這裡我們還是將斷點打在HomeController
Index
方法中。
當斷點到達return View()
程式碼塊時,我們點選F11, Visual Studio會彈出以下視窗,提示你是否想要下載原始檔進行除錯
點選確定之後,斷點就進入了