在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源代码,了解内部工作方式。

参考资料:

  • Debugging ASP.NET Core 2.0 Source Code

原文地址:http://www.cnblogs.com/tdfblog/p/debugging-asp-net-core-2-source.html

.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

调试 ASP.NET Core 2.0 源代码相关推荐

  1. Debug ASP.NET Core 2.0源代码

    首先你的VS必须为VS 2017 15.3或以上版本. 打开你的Startup类,在ConfigureServices方法上设置个断点,按F5 Debug应用. 在Call Stack(调用堆栈)窗口 ...

  2. 从头编写 asp.net core 2.0 web api 基础框架 (2)

    上一篇是: 从头编写 asp.net core 2.0 web api 基础框架 (1) Github源码地址是: https://github.com/solenovex/Building-asp. ...

  3. 在ASP.NET Core 2.0中创建Web API

    目录 介绍 先决条件 软件 技能 使用代码 第01步 - 创建项目 第02步 - 安装Nuget包 步骤03 - 添加模型 步骤04 - 添加控制器 步骤05 - 设置依赖注入 步骤06 - 运行We ...

  4. [译]ASP.NET Core 2.0 部分视图

    问题 如何在ASP.NET Core 2.0中使用部分视图来重用页面的公共部分? 答案 新建一个空项目,在Startup中添加MVC服务和中间件: public void ConfigureServi ...

  5. ASP.NET Core 2.0 : 三. 项目结构

    ASP.NET Core 2.0 : 三. 项目结构 原文:ASP.NET Core 2.0 : 三. 项目结构 本章我们一起来对比着ASP.NET Framework版本看一下ASP.NET Cor ...

  6. [译]ASP.NET Core 2.0 网址重定向

    问题 如何在ASP.NET Core 2.0中实现网址重定向? 答案 新建一个空项目,在Startup.cs文件中,配置RewriteOptions参数并添加网址重定向中间件(UseRewriter) ...

  7. ASP.NET Core 2.0 使用支付宝PC网站支付

    概述 支付宝有比较多的支付产品,比如当面付.APP支付.手机网站支付.电脑网站支付等,本次讲的是电脑网站支付. 详细 代码下载:http://www.demodashi.com/demo/11730. ...

  8. [译]ASP.NET Core 2.0 机密配置项

    问题 如何在ASP.NET Core 2.0中保存机密配置项(不用将其暴露给源代码管理器)? 答案 创建一个ASP.NET Core 2.0空项目,在项目节点上点击右键,并点击菜单项 - 管理用户机密 ...

  9. Centos7 Docker Jenkins ASP.NET Core 2.0 自动化发布和部署

    写在前面 Docker一直很火热,一直想把原本的Jenkins自动部署工具搬到Docker上面,无奈今年一直忙于各种事情,迟迟未实施这个事情,正好迎来了dotnet core 2.0 的正式发布,升级 ...

最新文章

  1. python输入输出-Python input()和print()终端输入输出
  2. Gerrit评审报错[remote rejected] develop- refs/for/develop(no new changes)
  3. js map对象遍历_前端测试题:有关于js中跨域请求的说法,错误的是?
  4. canvas.toDataURL()报错
  5. 如何修改SecureCRT中的端口转发过滤器?
  6. 模型类中的常用字段类型
  7. 千兆以太网_接收模块设计_udp_rgmii_rx
  8. 攻防世界-杂项-simple_transfer
  9. MTK平台修改Bootloader源代码,让Android设备一通电就自动开机
  10. 空降项目经理,该如何服众?
  11. Pyhton计算一元二次方程的根
  12. Nuscenes——环视相机下BEV时序融合:前后帧空间对齐操作
  13. 我看《三体》:行走于黑暗森林,常防备降维打击
  14. windows批处理脚本bat命令解析【6】常用命令整理
  15. 【图像处理】SFR算法详解1
  16. Linux监控系统概览
  17. 使用FTP上传数据到云服务器 CuteFTP和LeapFTP软件使用教程
  18. 基于树莓派和LD3320模块的语音识别控制
  19. 最佳视频转换器:Filmage Converter Mac
  20. RHCSA第二天练习

热门文章

  1. MYSQ 查看 2 进制日志
  2. java集合学习笔记 ---Collections类对集合的处理
  3. 九度 1376 最近零子序列
  4. 怎么实现动态设置静态文件存储目录?
  5. Blazor University (5)组件 — 字面量、表达式和指令
  6. Xamarin效果第八篇之视频监控
  7. 如何通过 C# 判断某个 IP 是否属于某IP段?
  8. 性能再提升70%?大咖前瞻带你揭开.NET6的神秘面纱!
  9. Windows 11 快速体验:开始菜单居中,全系圆角设计!
  10. 【视频回放】Best of Build Tour in China 暨 Watching Party - 大湾区专场