Visual Studio 2017中使用SourceLink调试ASP.NET Core源码

背景

当我们在学习ASP.NET Core或者调试ASP.NET Core程序的时候,有时候需要调试底层代码,但是当我们在Visual Studio中调试程序的时候,由于一些基础库或者第三方库缺少pdb文件,所以调试这些库的代码的时候,会出现断点不能进去的情况。

例如,在如下代码中,我们希望调试一下View()方法,看看其中的内部实现

但是当我们点击F11之后,程序会直接跳到下一步

Source Link

SourceLink是一组用于描述可嵌入到符号、二进制文件和包中的源代码控制元数据的包和规范。官网链接:https://github.com/dotnet/sourcelink

SourceLink当前支持的源代码来源

  • Github
  • Azure DevOps(VSTS)
  • TFS
  • Gitlab
  • Bitbucket

这里个人理解就是如果你调试的程序集是通过Nuget导入的,并且该程序集的源码是寄存在Github, VSTS等源代码平台中的,使用Source Link,调试阶段就会自动从源代码平台下载指定代码,并进入断点调试

标注:这里需要引入.NET Symbols的概念,我对这个理解的不是太深,希望有大牛给解释一下, 我后续再做补充。相关文章Publishing and Consuming Symbols and Source for Debugging

如何在Visual Studio 2017中使用Source Link

Visual Studio 2017 15.3以上版本中已经集成了Source Link, 具体开启方式如下

首先在 Options > Debugging > General中关闭Just My Code, 并启用Enable Source Link Support

然后在 Options > Debugging > Symbols中启用Microsoft Symbol Servers

最终效果

下面我们创建一个默认的asp.net core mvc站点,并以调试方式启动项目。 这里我们还是将断点打在HomeControllerIndex方法中。

当断点到达return View()代码块时,我们点击F11, Visual Studio会弹出以下窗口,提示你是否想要下载源文件进行调试

点击确定之后,断点就进入了

原文地址:https://www.cnblogs.com/lwqlun/p/9988369.html

时间: 2024-10-11 17:12:07

Visual Studio 2017中使用SourceLink调试ASP.NET Core源码的相关文章

【Asp.Net Core】在Visual Studio 2017中使用Asp.Net Core构建Angular4应用程序

前言 Visual Studio 2017已经发布了很久了.做为集成了Asp.Net Core 1.1的地表最强IDE工具,越来越受.NET系的开发人员追捧. 随着Google Angular4的发布.我一直在想,怎么能够用这个地表最强IDE工具编写Angular4的Asp.Net Core项目.经过不懈的研究.终于的得到了一套很好的解决方案与大家分享. 文章转载请著名出处:http://www.cnblogs.com/smallprogram 我们的目的 随着Web技术的快速发展,新的技术层出

Visual studio 2017 中的Javascript智能提示

1.智能提示 对于JS文件中的API,你若需要让那个JS文件中的方法能够在你写的那个JS文件中能够智能显示的话,直接把它拉进你的JS文件中就好了. 举个例子:你想 在你正在写的a.js文件中引用b.js中的功能与函数.很简单,你只需要把b.js文件拉到你的a.js文件中就好了.这时在你的文件 顶端会显示这样一行内容:/// <reference path="../angular.js" />. 就是这样,智能显示的很全面,就像你自己写类文件一样,里面的注释什么的都全部显示出

在Visual Studio 2017中找不到.NET Framework 4.6.2

原文 https://blogs.msdn.microsoft.com/benjaminperkins/2017/03/23/net-framwork-4-6-2-not-in-visual-studio-2017/ 在Visual Studio 2017中找不到.NET Framework 4.6.2?没有它,你不能得到所有酷的新的C#功能? 例如,当您创建一个新项目时,您可能只看到.NET Framework版本高达4.6.1,如图1所示. 图1,Visual Studio 2017中4.6

在Visual Studio 2017中,.NET(C#)通过Oracle.ManagedDataAccess来连接Oracle数据库

C#如何通过Oracle.ManagedDataAccess来连接Oracle数据库 1.先创建一个项目,鼠标右击项目中的引用,再点击管理NuGet程序包(也可以先下载dll文件,再选添加引用),在搜索栏中输入oracle查找,选择名为Oracle.ManagedDataAccess的安装. 2.引入Oracle.ManagedDataAccess.Client空间 3.数据库的连接字符串: User ID:用户名 Password:用户密码 Data Source:请看下面的截图 OK,到此在

Visual Studio 2017 集成Crystal Report为ASP.NET MVC呈现报表

原文:Visual Studio 2017 集成Crystal Report为ASP.NET MVC呈现报表 最近项目需要实现报表功能,平衡各方面的因素,还是使用Crystal Report(水晶报表) To get there click here: Download WIKI https://www.crystalreports.com/crystal-reports-visual-studio/ https://www.crystalreports.com/crvs/confirm/ 下载

在Visual studio 2017中使用EF6连接MySQL

在Visual studio 2017中使用EF6连接Mysql ADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案,不仅支持SQL Server,还支持MySQL.Oracle等数据库. 在本文中使用 Entity Framework 6 框架,来映射MySQL数据实体. 一.在VS2017中,通过Nuget安装插件 1. EntityFramework 6.2.0 2. Mysql.data.ent

asp.net core源码飘香:Logging组件(转)

简介: 作为基础组件,日志组件被其他组件和中间件所使用,它提供了一个统一的编程模型,即不需要知道日志最终记录到哪里去,只需要调用它即可. 使用方法很简单,通过依赖注入ILogFactory(CreateLogger方法)或ILogger<T>对象,获取一个ILogger对象,然后通过ILogger的各种扩展方法(都是调用Log方法)记录不同级别的日志. 源码剖析: 总结: 日志组件其实就是工厂模式的应用,但进行了改进,LoggerFactory每次都返回一个Logger对象,而Logger对象

asp.net core源码飘香:Configuration组件(转)

简介: 这是一个基础组件,是一个统一的配置模型,配置可以来源于配置文件(json文件,xml文件,ini文件),内存对象,命令行参数,系统的环境变量又或者是你自己扩展的配置源,该组件将各个配置源的数据按统一的格式(IDictionary<string, string> Data)进行加载,进而对外提供调用接口. 不仅如此,有些配置源(如文件配置源)还可以在配置源的数据发生变化时进行重新加载(IDictionary<string, string> Data),而程序员随时可以判断是否

Visual Studio 2015中的常用调试技巧分享

.NET 技术交流群:337901356 欢迎您的加入! 为什么要学习调试? 调试(Debug)是作为一个程序员必须要学会的东西,学会调试可以极大的提高开发效率,排错时间,很多人不喜欢调试,但我认为这是一个很不可取的选择,调试的时候能让我们看到程序的执行顺序.步骤以及过程等,调试的时候可以让我们监视代码中各个变量的情况,调试让我们可以让我们快速的找出错误的根源.可见调试是至关重要的. 要学习好怎么调试,那么必须去了解VS 这个IDE中的各种调试技巧,下面我就讲讲我所经常在调试程序中所用到的技巧.