前言:

  在我们日常开发过程中常常会使用到很多其他封装好的第三方中间件(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依赖库的源码(因为第一次需要下载源文件到本地可能等待时间要久一些)。

指定下载对应文件的源代码进行调试:

.NET Core使用Source Link提高源代码调试体验和生产效率的更多相关文章

  1. 【译】使用 Source Link 提高调试效率

    有多少次你在调试器中追踪一个缺陷,通过代码,观察局部变量的值改变,当你碰壁--不是你所期待的值和你不能进入的方法,因为它来自类库或 .NET 框架本身:或者您设置了一个条件断点,等待检查某个值是如何设 ...

  2. 让你发布的nuget包支持源代码调试

    前情概要 在不久的从前(也还是要以年为单位哈), 我们如果需要调试第三方代码, 或者框架代码很麻烦. 需要配置symbols, 匹配原始代码路径等. 为此, MS推出了 Source Link 功能, ...

  3. ".NET Core Open Source Update"阅读笔记

    原文链接:.NET Core Open Source Update [Immo Landwerth发布于2015年1月28日] corefx在github上的forks已经超过1000. 从2014年 ...

  4. 利用ASP.NET MVC源代码调试你的应用程序[转]

    由于项目需要,最近学起asp.net mvc.昨天遇到ViewData和TempData他们之间的分别这样让我纠结的问题.有园友强烈建议我去看ASP.NET MVC的源代码.所以,我想到如何在调试AS ...

  5. Senparc.Weixin.MP SDK 微信公众平台开发教程(二十二):如何安装 Nuget(dll) 后使用项目源代码调试

    最近碰到开发者问:我使用 nuget 安装了 Senparc.Weixin SDK,但是有一些已经封装好的过程想要调试,我又不想直接附加源代码项目,这样就没有办法同步更新了,我应该怎么办? 这其实是一 ...

  6. 基于ivy的源代码调试方法

    项目PORJ_TEST是项目PROJ的测试项目.在它的ivy中引用了PROJ的jar包.由于PROJ正处于开发阶段,源代码更改频繁, 在运行PROJ_TEST中的测试时,需要进入PROJ的jar包内部 ...

  7. Docker容器环境下ASP.NET Core Web API应用程序的调试

    本文主要介绍通过Visual Studio 2015 Tools for Docker – Preview插件,在Docker容器环境下,对ASP.NET Core Web API应用程序进行调试.在 ...

  8. Arcgis Runtime 100.3开发实例源代码调试日志

    Arcgis Runtime 100.3开发实例源代码调试日志 路径: "D:\arcgis runtime1003\arcgis-runtime-samples-dotnet-master ...

  9. 渐进式 jpg 和 交错式 gif png 提高图片站体验

    渐进式 jpg 和 交错式 gif png 提高图片站体验= 渐进式的JPG比原始JPG还要小!! 让图片性感的露给你看~google picasa 和 smashing magazine 都有用到搞 ...

随机推荐

  1. YouZack英语学习网站,英语四六级的福音

    YouZack英文网站 YouZack英语网站是,杨中科大佬开发给各位有需要的人使用的一个英语学习网站: 网站分两个模块: 听力模块部分图 听力模块界面 听力模块使用说明界面 背单词模块部分图 背单词 ...

  2. 工具-效率工具-listary快速打开文件,win+R使用(99.1.1)

    @ 目录 1.使用WIN+R打开软件 2.使用listary软件 1.使用WIN+R打开软件 添加环境变量 找到需要打开应用的目录 如我的桌面(C:\Users\Public\Desktop) 添加p ...

  3. CVE-2019-2618任意文件上传漏洞复现

    CVE-2019-2618任意文件上传漏洞复现 漏洞介绍: 近期在内网扫描出不少CVE-2019-2618漏洞,需要复测,自己先搭个环境测试,复现下利用过程,该漏洞主要是利用了WebLogic组件中的 ...

  4. python菜鸟教程学习:数据结构

    列表方法 list.append(x):把一个元素添加到列表的结尾,相当于 a[len(a):] = [x]. list.extend(L):通过添加指定列表的所有元素来扩充列表,相当于 a[len( ...

  5. 用matlab提取jpg曲线数据或者jpg图片重新复原

    I = imread('111.jpg');%读取处理好的图片,必须是严格坐标轴线为边界的图片 I=rgb2gray(I); %灰度变化 I(I>200)=255; %二值化 I(I<=2 ...

  6. 正方形和球体,利用蒙特卡洛计算pi值

    clc; clear all; close all; R = 3; time = 10000; origin = [0,0,0]; %%======绘制球体====== t=linspace(0,pi ...

  7. Tensorflow环境配置&安装

    Tensorflow环境配置&安装 明知故犯,是不想有遗憾. 背景:Tensorflow 环境配置和安装. 一.安装 Anaconda 二.建立.激活.安装.验证.使用 Tensorflow ...

  8. .net core 和 WPF 开发升讯威在线客服与营销系统:系统总体架构

    本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程.本产品已经成熟稳定并投入商用. 在线演示环境:https://kf.shengxunwei.com 注意 ...

  9. Qt学习笔记-Qtcreator的webkit和qt4.7.0的版本有关

    之前下载了一个最新的是qtcreator,是通过ubuntu的是apt-get下载的.可是里面没有webkit控件.网上的网友说是最新的没有了.要用老版的,于是下载了一个2.5.2的就正常了. 用老版 ...

  10. 使用docker制作Mysql镜像

     一.过程说明 通过Dockerfile创建mysql镜像,使用的mysql软件包为mariadb二进制分发版,最终在宿主机启动mysql容器从而能在mysql容器外部访问mysql服务. 宿主机IP ...