.NET Core 使用 Source Link 提高源代碼調(diào)試體驗(yàn)和生產(chǎn)效率

轉(zhuǎn)自:追逐時光者 cnblogs.com/Can-daydayup/p/14321010.html
前言
在我們?nèi)粘i_發(fā)過程中常常會使用到很多其他封裝好的第三方中間件(NuGet依賴項(xiàng))、類庫或者是.NET框架中自帶的庫。
但是當(dāng)你想要對這些類庫的方法設(shè)置斷點(diǎn)調(diào)試,然后發(fā)現(xiàn)無法F11(逐語句)調(diào)試進(jìn)源碼中調(diào)用堆棧大部分顯示為灰色,而不讓您看到調(diào)用堆棧中較早發(fā)生的事情。
如果可以設(shè)置斷點(diǎn)并在NuGet依賴項(xiàng)或框架本身上使用調(diào)試器的所有功能,那么我們的源碼調(diào)試體驗(yàn)和生產(chǎn)效率會提升非常的多。那么Source Link這項(xiàng)技術(shù)剛好就滿足了我們對源碼調(diào)試的意愿。
什么是Source Link
Source Link是一項(xiàng)技術(shù),可讓開發(fā)人員從NuGet調(diào)試.NET程序集的源代碼。源鏈接在創(chuàng)建NuGet程序包時執(zhí)行,并將源代碼控制元數(shù)據(jù)嵌入程序集和程序包中。下載該程序包并在Visual Studio中啟用了Source Link的開發(fā)人員可以進(jìn)入其源代碼。Source Link提供了源代碼控制元數(shù)據(jù),以創(chuàng)建出色的調(diào)試體驗(yàn)。
GitHub源碼地址:https://github.com/dotnet/sourcelink
Visual Studio配置啟用Source Link
拓展:符號文件即為.pdb的文件。
1、選擇工具>選項(xiàng)>調(diào)試>符號,并確保已選中“ Microsoft符號服務(wù)器(.NET框架相關(guān)的庫)和NuGet.org符號服務(wù)器”選項(xiàng)。為符號高速緩存指定目錄是避免再次下載相同符號,提高源碼查看效率。

?2、在“工具” >“選項(xiàng)” >“調(diào)試” >“常規(guī)”中禁用【啟用“僅我的代碼”】,因?yàn)槲覀兿M{(diào)試器嘗試為解決方案之外的代碼找到符號。驗(yàn)證是否已選中(默認(rèn)情況下)。如果您想進(jìn)入.NET Framework代碼,則還需要選中。.NET Core不需要此功能。

Visual Studio啟用Source Link調(diào)試
接下來以Newtonsoft.Json(一款.NET中開源的Json序列化和反序列化類庫)為例。有時您想進(jìn)入框架來查看發(fā)生了什么,特別是如果發(fā)生了意外的事情。使用Source Link,您可以像使用自己的代碼一樣進(jìn)入框架方法,檢查所有變量并設(shè)置斷點(diǎn)。
未啟用Source Link調(diào)試之前
如果您在沒有Source Link的情況下嘗試了此操作,那么在按F11介入之前和之后,就會看到以下內(nèi)容,無法進(jìn)入類庫中查看其源碼。


啟用Source Link調(diào)試
調(diào)試器不會介入,是因?yàn)闆]有符號或源。一旦配置了Source Link,當(dāng)我們進(jìn)入時,可以通過F11直接調(diào)試Nuget依賴庫的源碼(因?yàn)榈谝淮涡枰螺d源文件到本地可能等待時間要久一些)。


指定下載對應(yīng)文件的源代碼進(jìn)行調(diào)試

【推薦】.NET Core開發(fā)實(shí)戰(zhàn)視頻課程?★★★
.NET Core實(shí)戰(zhàn)項(xiàng)目之CMS 第一章 入門篇-開篇及總體規(guī)劃
【.NET Core微服務(wù)實(shí)戰(zhàn)-統(tǒng)一身份認(rèn)證】開篇及目錄索引
Redis基本使用及百億數(shù)據(jù)量中的使用技巧分享(附視頻地址及觀看指南)
.NET Core中的一個接口多種實(shí)現(xiàn)的依賴注入與動態(tài)選擇看這篇就夠了
用abp vNext快速開發(fā)Quartz.NET定時任務(wù)管理界面
在ASP.NET Core中創(chuàng)建基于Quartz.NET托管服務(wù)輕松實(shí)現(xiàn)作業(yè)調(diào)度
現(xiàn)身說法:實(shí)際業(yè)務(wù)出發(fā)分析百億數(shù)據(jù)量下的多表查詢優(yōu)化
