前言:
在我們日常開發過程中常常會使用到很多其他封裝好的第三方中間件(NuGet依賴項)、類庫或者是.NET框架中自帶的庫。但是當你想要對這些類庫的方法設置斷點調試,然后發現無法F11(逐語句)調試進源碼中調用堆棧大部分顯示為灰色,而不讓您看到調用堆棧中較早發生的事情。如果可以設置斷點並在NuGet依賴項或框架本身上使用調試器的所有功能,那么我們的源碼調試體驗和生產效率會提升非常的多。那么Source Link這項技術剛好就滿足了我們對源碼調試的意願。
什么是Source Link:
Source Link是一項技術,可讓開發人員從NuGet調試.NET程序集的源代碼。源鏈接在創建NuGet程序包時執行,並將源代碼控制元數據嵌入程序集和程序包中。下載該程序包並在Visual Studio中啟用了Source Link的開發人員可以進入其源代碼。Source Link提供了源代碼控制元數據,以創建出色的調試體驗。
GitHub源碼地址:
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依賴庫的源碼(因為第一次需要下載源文件到本地可能等待時間要久一些)。
指定下載對應文件的源代碼進行調試: