Visual Studio中加载NuGet外部程序集PDB文件调试问题求助
解决方案步骤
1. 发布NuGet包时包含调试符号(核心问题)
问题根源是发布到个人NuGet服务器的stigzler.controls包未包含.pdb调试符号文件,导致MyFabApp拉取后无法加载调试信息。需要修改类库项目的打包配置:
- 打开
stigzler.controls项目的.csproj文件,添加以下配置:<PropertyGroup> <!-- 生成NuGet推荐的符号包格式 --> <IncludeSymbols>true</IncludeSymbols> <SymbolPackageFormat>snupkg</SymbolPackageFormat> <!-- 确保生成完整调试信息 --> <DebugType>full</DebugType> <DebugSymbols>true</DebugSymbols> </PropertyGroup> - 重新生成并发布类库到个人NuGet服务器,此时会同时产出主包(
.nupkg)和符号包(.snupkg)。
2. 配置Visual Studio加载符号
- 打开
Tools>Options>Debugging>Symbols,添加你的个人NuGet服务器地址作为符号源(符号源可与包源地址一致,NuGet会自动识别符号包)。 - 启用个人符号源,可设置本地缓存路径避免重复下载符号文件。
3. 确保MyFabApp的调试配置正确
- 切换MyFabApp到调试模式:发布模式下
Debug.WriteLine会被编译器自动移除,且无法加载调试符号。 - 清理MyFabApp的
bin和obj文件夹,执行NuGet还原后重新编译,确保拉取到新的带符号的NuGet包。 - 检查输出窗口:点击输出窗口的「显示输出来自」下拉框,选择「调试」,确认能看到
Debug.WriteLine的输出内容。
4. 额外排查项
- 再次确认
Tools>Options>Debugging>General中已取消勾选「启用仅我的代码」。 - 在
Tools>Options>Debugging>Symbols中点击「清空符号缓存」,重启调试让VS重新下载符号。 - 验证MyFabApp引用的
stigzler.controls版本为你刚重新发布的带符号版本,避免引用旧的无符号包。
内容的提问来源于stack exchange,提问作者stigzler
相关产品推荐
相关产品推荐

