介绍

Source Link是一组软件包和一个规范, 它将一些元数据添加到PDB文件,以将本地文件重新映射到GitHub上的文件,因此Visual Studio可以在这需要时下载文件, 该项目的目的是可以为使用Nuget安装软件的用户提供源代码调试, Microsoft库(例如.NET Core和Roslyn)都已启用Source Link。

使用NuGet包是向项目添加依赖项的一种非常方便的方法,但是,当您遇到NuGet软件包的问题并想对其进行调试时,会有点麻烦,你可能需要从在github 查看源代码,或者直接git clone到本地, Visual Studio 2017 15.3以上版本中已经集成了Source Link , 现在你可以非常方便的在VS中调试 .Net Core 和 Nuget分发的软件包的源代码,并且不需要安装 ReSharper 这些工具,这是非常愉快的源代码调试体验。

sourcelink 最初的版本是 @ctaggart 实现的,看了下,原项目已存档, 然后 .Net 团队开始注意到这个项目,和 ctaggart 一起做了现在的版本。

官网地址: https://github.com/dotnet/sourcelink

SourceLink 支持一下几种源代码来源:

•github.com and GitHub Enterprise

•GitLab     • Azure Repos (former Visual Studio Team Services)

•Azure DevOps Server (former Team Foundation Server)     •Bitbucket

快速使用

必须满足 Visual Studio 2017 15.3以上版本,然后做一下简单的设置

打开 工具 -> 选项 -> 调试, 勾选 启用源链接支持,取消勾选 启用仅我的代码

[2]

设置符号包(symbol packages) 的地址,它包含了源代码文件的url地址

[3]

Newtonsoft.Json 是我经常使用的一个软件包, 也是 Nuget 下载量第一的包,我想看一下它的源代码,了解如何进行序列化的,我新建了一个 .Net Core 的控制台项目,现在断点在序列化的这一步

[4]

现在直接 F11 逐语句调试, 第一次的话,由于网络原因,可能会比较慢,等待即可

[5]

现在直接进入到了 Newtonsoft.Json 的源代码, 它将无缝地让我继续调试会话,非常方便, 如果您在公司内部使用Gitlab, Devops或在开源环境中发布了NuGet,则绝对应该使用SourceLink。

它的路径在 C:\Users\Spring Lee\AppData\Local\SourceServer\c15d6df0a4a5956040073c3613425e76998a1599e7eeac2338c52ed35d1a47b7\Src\Newtonsoft.Json\JsonSerializer.cs

在项目中使用SourceLink

接下来我会创建一个 netstandard2.0 版本的类库项目,它的源码放在了github,并且我会发布到 Nuget.org,当然其他方式(Azure Devops,Gitlab) 也是支持的,让它支持SourceLink

创建完成后,首先需要引入 Microsoft.SourceLink.GitHub

[6]

右键项目编辑项目文件, 编辑csproj文件

 <PropertyGroup><TargetFramework>netstandard2.0</TargetFramework><PublishRepositoryUrl>true</PublishRepositoryUrl><IncludeSymbols>true</IncludeSymbols><SymbolPackageFormat>snupkg</SymbolPackageFormat></PropertyGroup>

然后需要提交 git,推送代码。准备工作完成后,项目右键,直接打包,会同时生成 .nupkg 和 .snupkg(符号包)

[7]

打开 .snupkg 文件,查看 PDB Sources, 发现pdb 文件包含了源代码文件的url地址

[8]

然后同时上传到 Nuget.org, 上传成功后,会同时有 package 和 symbols 的下载标识

[9]

到这里为止,一个支持source link 的nuget包已经发布成功了,你可以用同样的方式进行源代码调试

打个广告

HttpReports 是针对.Net Core 开发的轻量级APM系统, 基于MIT开源协议,针对于微服务场景,主要功能包括统计,分析,拓扑图,告警, 链路监控,请求日志等,感兴趣的同学可以点个 Star 关注下,谢谢

Github地址:https://github.com/dotnetcore/HttpReports

在线预览:http://122.51.188.23:8080 账号: admin 密码 123456

探索 .Net Core 的 SourceLink相关推荐

  1. 探索 .NET Core 依赖注入的 IServiceProvider

    在上一篇文章中,我们学习了Microsoft.Extensions.DependencyInjection中的IServiceCollection,包括服务注册转换为ServiceDescriptor ...

  2. 探索 dotnet core 为何在 Windows7 系统需要补丁的原因

    在一些 Windows 7 系统上,根据 dotnet 官方文档,需要安装上 KB2533623 补丁,才能运行 dotnet core 或 .NET 5 等应用.尽管非所有的设备都需要安装此,但这也 ...

  3. 探索 .NET Core 依赖注入的 IServiceCollection

    如果您使用了.NET Core,则很可能已使用Microsoft.Extensions.DependencyInjection中的内置依赖项注入容器,在本文中,我想更深入地了解Microsoft De ...

  4. .Net Core迁移到MSBuild的多平台编译问题

    一.前言 本篇主要讨论.NET Core应用程序项目结构的主题,重点探索.NET Core应用程序的多平台编译问题,这里指的多平台是指.NET Framework..NET Core App..NET ...

  5. Visual Studio 2017 15.3 已发布,增加.NET Core 2 支持

    微软现已发布 Visual Studio 2017 (VS2017) 15.3 的正式版.虽然该版本的 VS2017 包含了几个显著的特色,但最令人关注的还是对 .NET Core 2 正式版的支持. ...

  6. HMS Core AR Engine 2D图片/3D物体跟踪技术 助力打造更智能AR交互体验

    AR技术已经被广泛应用于营销.教育.游戏.展览等场景.通过2D图像跟踪技术和3D物体跟踪技术,用户只需使用一台手机进行拍摄,即可实现海报.卡牌等平面物体以及文物.手办等立体物体的AR效果.尽管近年来2 ...

  7. HMS Core Discovery第15期直播预告|构筑立体世界,共造沉浸式营销

    [导读] AR技术,是一种将真实世界信息和虚拟世界信息"无缝"衔接的技术,现如今AR技术受到日益广泛的关注,在我们生活中发挥着重要的作用,并显示出巨大的潜力--它是如何改变我们观察 ...

  8. .NET Core 用 Blazor 做 jmeter 系列视频

    本文来安利大家宇辰大大的 .NET Core 用 Blazor 做 jmeter 系列视频 .Net Core 用Blazor做 jmeter 001之 Ribbon 布局 - Element Bla ...

  9. git管理大项目或者大文件

    git 是追踪代码库演进的最佳选择,并且它能让你与你的同事间高效协作.当你想要追踪的库非常巨大时会发生什么? 在这篇文章里,我会尝试着给你一些想法和技巧来恰当地处理不同种类的大仓库. 两种大代码库 如 ...

最新文章

  1. WebAssembly Studio:Mozilla提供的WASM工具
  2. Mac 下 IDEA 启动慢的问题
  3. MapReduce中Client提交Job源码分析
  4. 微信小程序隐藏标题栏navigationBar的方法
  5. WINCE支持的波斯语的codepages
  6. springboot对象方式注入
  7. android js gps定位,Android中的定位Demo
  8. Echarts数据grid直角坐标系(xAxis、yAxis)详解
  9. 软考倒计时25天: 案例背诵点
  10. jqGrid的单字段查询
  11. 每天学点SpringCloud(八):使用Apollo做配置中心
  12. [TOOLS]confluence添加word宏显示上传的word文档
  13. 2021全网最全物联网分析
  14. 结巴分词标注兼容_ICTCLAS2008汉语词性标注集
  15. INTERVAL 用法
  16. 用最小二乘法求斜率c语言,求一个用最小二乘法求拟合曲线表达式的C++程序,不需要图像,只要斜率和截距就行~...
  17. BGP Dampening Cyrus
  18. C语言初步-顺序结构-已知三边求三角形面积-海伦公式
  19. RKMEDIA--AI/AO的使用
  20. VC开发程序创建Dump文件

热门文章

  1. httpclient 多附件上传
  2. Axure RP使用攻略--动态面板的用途(8)
  3. Java捕获并处理线程失败抛出的异常
  4. Could not load the Tomcat server configuration at \Servers\Tomcat v7.0 Server at localhost-config
  5. IE6下z-index犯癫不起作用bug的初步研究
  6. SCM基础之过程描述
  7. 从零开始学习jQuery (九) jQuery工具函数 【转】
  8. android bilibili搜索框,仿bilibili搜索框效果(三句代码实现)
  9. linux基础命令rpm,rpm常用命令集合1
  10. Oracle即将发布的全新Java垃圾收集器 ZGC