ASP.NET Core 2.0 源代码
ASP.NET Core 2.0 源代码
在Visual Studio 2017中可以通过符号以及源链接,非常方便对 ASP.NET Core 2.0中源代码进行调试。在这篇文章中,我们将重点介绍如何使用源链接对ASP.NET Core源进行调试。
什么是源链接?
和我一样,您可能已经注意到在编译代码时,会创建的PDB文件。这些文件保存了符号信息,这些信息可以选择用于支持对外部源代码的调试。某些类型的符号文件可能包含一些源代码或源代码的映射。
很长一段时间以前,Microsoft已经托管了符号服务器,它们保存Microsoft产品(如.NET Framework和ASP.NET Core)已发布的符号文件。Visual Studio支持动态下载符号。为此,您必须禁用“调试” -> “常规”选项中的“启用仅我的代码”选项。默认情况下,此选项在Visual Studio中是启用的。

有关符号、符号服务器等的更多信息,请参阅此MSDN链接。
源链接允许您在符号文件中嵌入被调用方法的名称和位置清单,它可以识别包含代码的文件以及可以从哪里检索文件。ASP.NET Core(不是.NET Core)现在支持源链接,并提供到GitHub上托管代码的链接。
启用和使用源链接
首先的要求是将Visual Studio 2017更新到最新的版本(15.3),该更新添加了源链接的支持。如果安装此项,在“调试” -> “常规”选项中,您将看到“启用源链接支持”。

除了确保“启用仅我的代码”禁用外,您还必须启用Microsoft符号服务器,在“调试” -> “符号”选项中,可以从符号文件位置列表中启用“Microsoft符号服务器”。

启用符号服务器时,您需要接受调试时可能引入的性能影响。

设置完成后,准备调试ASP.NET Core源代码。为了测试这个,我在Visual Studio中创建了一个默认的ASP.NET Core 2.0 MVC项目。然后我在HomeController上为Index方法添加了一个断点。然后开始调试应用程序。第一次调试时,您可能会看到这样的消息。

这是正在下载的符号文件,可能需要一段时间才能完成。
一旦应用程序运行到您代码断点处,您就可以导航到调用堆栈,以看到正在执行的所有外部ASP.NET代码。

如果您双击任何这些调用,编辑器将使用符号来确定该代码所在的框架位置。使用符号文件中的链接,Visual Studio将从GitHub下载源文件。当源链接需要下载源代码时,您会看到如下警告对话框:

您可以选择第一项“下载源并继续调试”选项,并继续使用该文件进行调试。您可以选择第二个选项,将下载该文件,并禁用下次文件下载的警告。
下载完源文件后,它将显示在您选择堆栈对应的位置。

您还可以在该文件中的其它位置添加自己的断点,然后在调试应用程序时将其设置为命中。即使我们停止调试并重新启动,这似乎仍然是有效的。

总结
Very nice ,在ASP.NET Core中调试外部源码非常容易。通过这个功能可以获得更多的价值,让我们可以调试ASP.NET Core源代码,了解内部工作方式。
参考资料:
作者:Sweet Tang
本文地址:http://www.cnblogs.com/tdfblog/p/debugging-asp-net-core-2-source.html
ASP.NET Core 2.0 源代码的更多相关文章
- 调试 ASP.NET Core 2.0 源代码
在Visual Studio 2017中可以通过符号以及源链接,非常方便对 ASP.NET Core 2.0中源代码进行调试.在这篇文章中,我们将重点介绍如何使用源链接对ASP.NET Core源进行 ...
- [译]Debug ASP.NET Core 2.0源代码
原文 首先你的VS必须为VS 2017 15.3或以上版本. 打开你的Startup类,在ConfigureServices方法上设置个断点,按F5 Debug应用. 在Call Stack(调用堆栈 ...
- .NET跨平台之旅:将示例站点从 ASP.NET 5 RC1 升级至 ASP.NET Core 1.0
终于将“.NET跨平台之旅”的示例站点 about.cnblogs.com 从 ASP.NET 5 RC1 升级至 ASP.NET Core 1.0 ,经历了不少周折,在这篇博文中记录一下. 从 AS ...
- ASP.NET Core 2.0 SignalR 示例
# 一.前言 上次讲SignalR还是在<[在ASP.NET Core下使用SignalR技术](http://dotnet.ren/2017/02/21/%E5%9C%A8ASP-NET-Co ...
- 在ASP.NET CORE 2.0使用SignalR技术
一.前言 上次讲SignalR还是在<在ASP.NET Core下使用SignalR技术>文章中提到,ASP.NET Core 1.x.x 版本发布中并没有包含SignalR技术和开发计划 ...
- Centos7 & Docker & Jenkins & ASP.NET Core 2.0 自动化发布和部署
写在前面 Docker一直很火热,一直想把原本的Jenkins自动部署工具搬到Docker上面,无奈今年一直忙于各种事情,迟迟未实施这个事情,正好迎来了dotnet core 2.0 的正式发布,升级 ...
- [译]ASP.NET Core 2.0 中间件
问题 如何创建一个最简单的ASP.NET Core中间件? 答案 使用VS创建一个ASP.NET Core 2.0的空项目,注意Startup.cs中的Configure()方法: public vo ...
- [译]ASP.NET Core 2.0 带初始参数的中间件
问题 如何在ASP.NET Core 2.0向中间件传入初始参数? 答案 在一个空项目中,创建一个POCO(Plain Old CLR Object)来保存中间件所需的参数: public class ...
- [译]ASP.NET Core 2.0 全局配置项
问题 如何在 ASP.NET Core 2.0 应用程序中读取全局配置项? 答案 首先新建一个空项目,并添加两个配置文件: 1. appsettings.json { "Section1&q ...
随机推荐
- listen and translation exercise 53
It was hard work and there weren't any interesting things for him. You should be an expert with comp ...
- COM对象创建过程
在客户端需要调用COM组件时,通常调用windowAPI函数: STDAPI CoCreateInstance( REFCLSID rclsid, //创建的Com对象的类标识符(CLSID) LPU ...
- 在Windows7 下 mingw32 开发环境中采用 glut3.7 学习 OpenGL
2015年10月2日更新: 发现 freeglut 很好用兼容于 gut ,而且开源还在更新中.因此我觉得放弃以前的 glut 了,转而用 freeglut 了. 买了本<计算机图形学第4版&g ...
- linux ssh 命令使用解析
前一阵远程维护Linux服务器,使用的是SSH,传说中的secure shell. 登陆:ssh [hostname] -u user 输入密码:***** 登 陆以后就可以像控制自己的机器一样控制它 ...
- java面试题07
1.重载和重写的区别? 重载(Overload):(1)方法重载是让类以统一的方式处理不同类型数据的一种手段.多个同名函数同时存在,具有不同的参数个数/类型.重载Overloading是一个类中多态性 ...
- Tensorflow知识点学习
1.TensorFlow中Tensor维度理解: (1)对于2维Tensor 0维对应列 1维对应行 (2)维度操作举例: 对于k维的,tf.reduce_sum(x, axis=k-1)的结果是对最 ...
- Chrome检查更新总失败?安装细则讲解
现在 Google Chrome 的稳定版都已经发布 68.0 版本了,我机上还是 54, 本想在线更新一下,结果点击菜单项中的“关于 Google Chrome”后,进入的界面提示“更新失败(错误: ...
- Windows窗体间的数据交互
轻松掌握Windows窗体间的数据交互 作者:郑佐 2004-04-05 Windows 窗体是用于 Microsoft Win ...
- zend studio 10.6.2破解和汉化
破解文件下载地址 http://dldx.csdn.net/fd.php?i=881874911175745&s=b2f091d89f675e30c36dcc00c4cd2702 下载破解 ...
- 【251】◀▶IEW-Unit16
Unit 16 Commodities and Manufacturered Goods 多幅饼图的写作技巧 1.model1对应图片分析 2.Model1范文分析 Model 1 The pie c ...