You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

是否可以在堆栈跟踪中获取NuGet包代码对应的行号?

实现.NET应用引用的NuGet包代码在堆栈跟踪显示行号的方法

堆栈跟踪的行号依赖程序对应的PDB(程序数据库)文件解析得到,要显示NuGet包内代码的行号,可根据你是否为包的维护者选择对应方案:

如果你是该NuGet包的维护者

直接修改包项目的编译配置,让包自带调试信息即可,编辑包项目的.csproj文件,添加如下配置:

<PropertyGroup>
  <!-- Release模式下也生成调试符号 -->
  <DebugSymbols>True</DebugSymbols>
  <!-- 选择embedded可将PDB直接嵌入dll文件,使用者无需额外处理即可读取调试信息 -->
  <!-- 也可设置为portable,将PDB作为独立文件和dll一同打包进NuGet包的lib目录 -->
  <DebugType>embedded</DebugType>
</PropertyGroup>

重新编译打包发布后,使用者安装对应版本的包,运行时堆栈就能自动显示包内代码的行号。

如果你仅使用第三方NuGet包,无法修改包的编译逻辑

  • 首先关闭调试的「仅我的代码」限制:在开发IDE的调试设置中,取消勾选「启用仅我的代码」选项,允许调试器加载第三方代码的符号文件
  • 配置符号加载源:若NuGet包的发布方提供了公开符号服务器,可在调试设置的符号路径中添加对应源,调试时会自动下载匹配版本的PDB文件
  • 若没有公开的符号源,可使用反编译工具生成对应版本NuGet包的PDB文件,将PDB放到应用运行目录下和对应dll同路径,也可实现行号解析
  • 生产环境需要显示行号时,只需将对应PDB文件和应用的dll一同部署即可。

内容的提问来源于stack exchange,提问作者BigNull

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 07:06:00