探索 .Net Core 的 SourceLink

介绍

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/305943.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql group by 范围_MySQL 按照范围/等级 进行Group By

我们要做一张报表表格&#xff0c;从mysql里取出数据&#xff0c;然后按等级分组&#xff0c;如何实现呢&#xff1f;MySQL 示例 SQL:SELECTftime,sum(cost) as cost,count(advertiser_id) as aduser_num,sum(pv) as pv,sum(vc) as vc,CASEWHEN cost>100000 THEN ‘1’WHEN …

「译」 用 Blazor WebAssembly 实现微前端

原文作者: Wael Kdouh原文链接&#xff1a;https://medium.com/waelkdouh/microfrontends-with-blazor-webassembly-b25e4ba3f325我聊下最近我在做的事情&#xff0c;然后分享下在Blazor WebAssembly 微前端的实现细节&#xff0c;这篇文章是我的一些心得&#xff0c;以及一个示…

ubuntu mysql集群搭建_ubuntu server部署mysql集群

简介[说明本次部署的内容&#xff0c;目的等等]本部署文档的目的是如何在ubuntu server上进行mysql的群集部署。前期准备在进行本文档操作前&#xff0c;需要完成如下前期步骤&#xff1a;1.安装3台ubuntu server服务器&#xff1b;Server1: ndbd 192.168.68.5Server2: ndbd 19…

使用 dotnet-monitor 分析.NET 应用程序

dotnet-monitor 是 .NET Core 命令行接口 (CLI) 工具, 可以很方便的在dotnet环境中分析我们的应用程序&#xff0c;需要注意的是&#xff0c;目前它还只是一个实验性的工具在这之前&#xff0c;我们使用的有 dotnet-counters&#xff0c;dotnet-dump 和 dotnet-trace&#xff0…

mysql数据库查看用户名_mysql怎么查看用户名?

我们在使用mysql的时候&#xff0c;有时候需要来查看当前用户。本篇文章将和大家讲述mysql怎么查看用户名&#xff0c;感兴趣的朋友可以了解一下。启动数据库&#xff1a;[rootserver ~]# mysqld_safe &[1] 3289[rootserver ~]# 130913 08:19:58 mysqld_safe Logging to /u…

如何实现 ASP.NET Core WebApi 的版本化

Web API 的版本化可以尽量保证在相同url情况下保留一个 api 的多个版本&#xff0c;通常一个 webapi 会有多个client&#xff0c;这些client包括&#xff1a;app&#xff0c;web&#xff0c;html5&#xff0c;crawl 等等同构或者异构的平台&#xff0c;当 api 升级之后&#xf…

mysql查询重复的名字_Mysql中like用法:查询名字中含有风字的学生信息

一、表名和字段–1. 学生表 student (s_id,s_name,s_birth,s_sex) –学生编号&#xff0c;学生姓名&#xff0c;出生年月&#xff0c;学生性别–2. 课程表 course (c_id,c_name,t_id) –课程编号&#xff0c;课程名称&#xff0c;教师编号–3. 教师表 teacher (t_id,t_name) –…

mysql单行数据64k_字段数据大于64K的解决方案 | 学步园

方法一&#xff1a;在SQL Server Management Studio配置 max text repl size 选项&#xff1a;1、在对象资源管理器中&#xff0c;右键单击服务器并选择“属性”。2、单击“高级”节点。3、在“杂项”下&#xff0c;将“最大文本复制大小”选项更改为所需的值。方法二&#xff…

一次Task.Run异常问题的排查

最近在测试一个功能代码时发现一个非常奇怪的问题&#xff0c;主要是Task.Run引起一些不符合逻辑的错误&#xff0c;以下针对这一问题排查的总结。问题代码可以建个控制台程序来运行以下代码class Program{static User user new User();static void Main(string[] args){for (…

git maven 一键部署_Jenkins Git Maven搭建自动化部署项目环境 邮件通知

简介折腾了两个晚上&#xff0c;趁着今晚比较有空&#xff0c;把jenkinsgitmaven搭建自动化部署项目环境搭建的过程记录一下,这里我把github作为git的远程仓库(https://github.com/jacky- lulu/cxf_demo-Maven-Webapp)系统&#xff1a;centos6.5maven: Apache Maven 3.3…

在.NET Core 中收集数据的几种方式

APM是一种应用性能监控工具&#xff0c;可以帮助理解系统行为, 用于分析性能问题的工具&#xff0c;以便发生故障的时候&#xff0c;能够快速定位和解决问题, 通过汇聚业务系统各处理环节的实时数据&#xff0c;分析业务系统各事务处理的交易路径和处理时间&#xff0c;实现对应…

改进你的代码-扩展了一下IEnumerableT

背景今天用EF写东西&#xff0c;觉得IEnumerable里面写where()条件老是写if判断很麻烦&#xff0c;这样&#xff1a;if (!string.IsNullOrWhiteSpace(key)){list list.Where(u > u.Name.Contains(key)).ToList();}if (!string.IsNullOrWhiteSpace(key)){list list.Where(u…

java 连接池连接mysql数据库需要哪些jar包_DBCP-基于Java8导入DBCP连接池所需JAR包并编写DBCPUtils工具类...

上述五个jar包缺一不可下载解压后,进入解压出的文件夹将这五个jar包复制出来放入自己创建的myJar文件夹中(myJar文件夹创建与说明)接下来就可以在工程中进行使用package utils;import com.mysql.cj.jdbc.Driver;import org.apache.commons.dbcp2.BasicDataSource;import java.s…

C# 在自定义的控制台输出重定向类中整合调用方信息

C# 在自定义的控制台输出重定向类中整合调用方信息目录C# 在自定义的控制台输出重定向类中整合调用方信息一、前言二、输出重定向基础版三、输出重定向进阶版&#xff08;传递调用方信息&#xff09;四、后记及资源独立观察员 2021 年 1 月 6 日一、前言众所周知&#xff0c;在…

mac 上mysql怎么卸载不了_mac的mysql怎么卸载?

Mac下卸载mysql的方法&#xff1a;1、关闭mysql查看mysql是否启动&#xff1a;ps -ef |grep mysql输入&#xff1a;kill -9 (./mysqld前面第二个数字&#xff0c;这里是627) 然后回车&#xff0c;关闭mysql。2、卸载&#xff1a;在Mac终端使用下面的命令删除所有mysql文件即可s…

C#实现网页加载后将页面截取成长图片

背景最近再做一个需求&#xff0c;需要对网页生成预览图&#xff0c;如下图但是网页千千万&#xff0c;总不能一个个打开&#xff0c;截图吧&#xff1b;于是想着能不能使用代码来实现网页的截图。其实要实现这个功能&#xff0c;无非就是要么实现一个仿真浏览器&#xff0c;要…

mysql 8 配置参数优化_mysql8 参考手册--配置非持久性优化器统计参数

本节介绍如何配置非持久性优化器统计信息。当innodb_stats_persistentOFF或使用创建或更改单个表时&#xff0c;Optimizer统计信息不会保留在磁盘 上 STATS_PERSISTENT0。相反&#xff0c;统计信息存储在内存中&#xff0c;并且在服务器关闭时会丢失。统计信息还可以通过某些操…

“既然计划没有变化快,那制订计划还有个卵用啊!”

这是头哥侃码的第229篇原创每年年初&#xff0c;我的朋友圈里都会炸出不少在打完鸡血之后&#xff0c;迫不及待向全世界宣告自己 “新年Flag” 的人。有的人&#xff0c;把健身、养生设为目标&#xff0c;什么不暴瘦20斤不换头像呀&#xff0c;什么再也不吃炸鸡啤酒啦&#xff…

图书管理系统jsp代码_【程序源代码】使用Java开发的图书管理系统

关键字&#xff1a;java 管理系统 正文 | 内容01—【概述】使用Java开发的图书管理系统&#xff0c;读者可以注册登录&#xff0c;登录时会判断账号类型再分别跳到各自对应的页面&#xff0c;读者可以查找&#xff0c;借阅&#xff0c;还书&#xff0c;查看历史借阅记录&#x…

老人言:尽量用异步

官方和老人言&#xff0c;asp.net core中尽量用异步&#xff0c;为什么呢&#xff1f;接下来是个小demo&#xff0c;看看同步异步的差别吧&#xff0c;或许通过这个demo&#xff0c;就明白官方和老人的良苦用心了。1、创建一个sql server的表CREATE TABLE [dbo].[Students]([St…