.NET Core使用Source Link提高原始碼除錯體驗和生產效率
前言:
在我們日常開發過程中常常會使用到很多其他封裝好的第三方中介軟體(NuGet依賴項)、類庫或者是.NET框架中自帶的庫。但是當你想要對這些類庫的方法設定斷點除錯,然後發現無法F11(逐語句)除錯進原始碼中呼叫堆疊大部分顯示為灰色,而不讓您看到呼叫堆疊中較早發生的事情。如果可以設定斷點並在NuGet依賴項或框架本身上使用偵錯程式的所有功能,那麼我們的原始碼除錯體驗和生產效率會提升非常的多。那麼Source Link這項技術剛好就滿足了我們對原始碼除錯的意願。
什麼是Source Link:
Source Link是一項技術,可讓開發人員從NuGet除錯.NET程式集的原始碼。源連結在建立NuGet程式包時執行,並將原始碼控制元資料嵌入程式集和程式包中。下載該程式包並在Visual Studio中啟用了Source Link的開發人員可以進入其原始碼。Source Link提供了原始碼控制元資料,以創建出色的除錯體驗。
GitHub原始碼地址:
https://github.com/dotnet/sourcelink
Visual Studio配置啟用Source Link:
拓展:符號檔案即為.pdb的檔案。
1、選擇工具>選項>除錯>符號,並確保已選中“ Microsoft符號伺服器(.NET框架相關的庫)和NuGet.org符號伺服器”選項。為符號快取記憶體指定目錄是避免再次下載相同符號,提高原始碼檢視效率。
2、在“工具” >“選項” >“除錯” >“常規”中禁用【啟用“僅我的程式碼”】,因為我們希望偵錯程式嘗試為解決方案之外的程式碼找到符號。驗證是否已選中(預設情況下)。如果您想進入.NET Framework程式碼,則還需要選中。.NET Core不需要此功能。
Visual Studio啟用Source Link除錯:
接下來以Newtonsoft.Json(一款.NET中開源的Json序列化和反序列化類庫)為例。有時您想進入框架來檢視發生了什麼,特別是如果發生了意外的事情。使用Source Link,您可以像使用自己的程式碼一樣進入框架方法,檢查所有變數並設定斷點。
未啟用Source Link除錯之前:
如果您在沒有Source Link的情況下嘗試了此操作,那麼在按F11介入之前和之後,就會看到以下內容,無法進入類庫中檢視其原始碼。
啟用Source Link除錯:
偵錯程式不會介入,是因為沒有符號或源。一旦配置了Source Link,當我們進入時,可以通過F11直接除錯Nuget依賴庫的原始碼(因為第一次需要下載原始檔到本地可能等待時間要久一些)。
指定下載對應檔案的原始碼進行除錯: