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

无法调试来自私有Azure Repo的NuGet包问题求助

解决Azure Artifacts包调试时无法步入代码的问题

针对你遇到的Release配置发布的NuGet包已显示符号加载,但无法步进代码的问题,可按以下步骤排查解决:

1. 关闭Release构建的代码优化

Release默认开启的代码优化会导致调试器无法精准映射代码行,需在项目文件或构建命令中禁用:

  • 项目文件中添加属性:
    <PropertyGroup>
      <!-- 保留原有属性 -->
      <Optimize>false</Optimize>
    </PropertyGroup>
    
  • 或在流水线的build任务中追加参数:
    arguments: '--configuration Release /p:Optimize=false'
    

2. 确保Snupkg符号包同步发布到Azure Artifacts

当前流水线的push任务仅推送.nupkg,需将.snupkg也纳入推送范围,修改任务配置:

- task: DotNetCoreCLI@2
  inputs:
    command: 'push'
    packagesToPush: '$(Build.ArtifactStagingDirectory)/*.nupkg;$(Build.ArtifactStagingDirectory)/*.snupkg'
    nuGetFeedType: 'internal'
    publishVstsFeed: 'myfeed'

3. 验证PDB中的SourceLink有效性

使用dotnet sourcelink工具检查PDB是否包含正确的仓库链接:

dotnet sourcelink test ./bin/Release/netstandard2.1/YourAssembly.pdb

若输出错误,需确认:

  • 流水线运行环境可正常访问Azure Repos仓库
  • Microsoft.SourceLink.AzureRepos.Git包版本与项目SDK兼容(可尝试升级至最新稳定版)
  • 构建时Git仓库信息完整(流水线需基于Git仓库触发,而非本地代码上传)

4. 检查VS符号加载的具体来源

在VS调试时打开模块窗口(调试 → 窗口 → 模块),找到你的包模块:

  • 右键选择「符号加载信息」,确认符号来自Azure Artifacts的.snupkg,而非本地缓存或旧版本PDB
  • 若存在缓存问题,手动清理VS符号缓存目录:%TEMP%\SymbolCache

5. 确认调试设置细节

确保VS调试设置中:

  • 已禁用「仅我的代码」
  • 已勾选「启用Source Link支持」和「启用源服务器支持」
  • 未勾选「要求源文件与原始版本完全匹配」(该选项可能因源码行号匹配问题导致无法步进)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 00:53:22