介绍

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以上版本,然后做一下简单的设置

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

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

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

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

现在直接进入到了 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

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

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

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

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

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

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

打个广告

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

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

在线预览: http://122.51.188.23:8080

账号: admin 密码 123456

最新文章

  1. vmware 下centos7配置网络
  2. Tomcat日志切割
  3. 6、软件配置工程师要阅读的书籍 - IT软件人员书籍系列文章
  4. 用FLASH,安智和IOS打电话方法
  5. 柬埔寨手机上网资费套餐(3G/4G上网)
  6. JETTY嵌入式Web容器的开发
  7. google翻译,翻译当前的网页
  8. 【LeetCode】231 - Power of Two
  9. Java集合类之栈Stack
  10. [C++关键字] 内置类型
  11. 5. c++ 内存管理 C/C++ 内存机制
  12. shell文字过滤程序(十):cut命令
  13. mysql将表数据导出为txt或csv文件
  14. Android安全–Dex文件格式详解
  15. kNN总结
  16. Anaconda的安装及使用
  17. 感悟优化——Netty对JDK缓冲区的内存池零拷贝改造
  18. Nginx---应用场景小结
  19. LeetCode11.盛最多水的容器
  20. bug提单规范

热门文章

  1. 快速解读linq语法
  2. 为什么说switch比if快
  3. Warning: Permanently added the RSA host key for IP address &#39;52.74.223.119&#39; to the list of known hosts.
  4. 我不信这篇文章能让你学会C语言,但是我还是想分享一下!
  5. python matplotlib配置
  6. 第五章 Linux操作系统关机、重启、注销及其查看ip命令
  7. 一个鲜为人知但很实用的Windows使用技巧
  8. 10 个 Python 初学者必知编码小技巧
  9. dns配置文件的方式
  10. Python爬虫训练:爬取酷燃网视频数据