Visual Studio 2017测试调试异常:提示no source available问题求助
解决ASP.NET Core迁移后net461项目测试用例无法调试的问题
我之前处理过类似的场景,结合你提到的迁移至ASP.NET Core后目标框架为net461的情况,给你几个实用的排查和解决步骤:
1. 对齐测试项目与主项目的目标框架
- 确认测试项目的目标框架同样设置为
net461,和主项目保持一致。迁移过程中容易误改测试项目的TFM(目标框架名称),导致调试器无法匹配源文件。 - 检查测试项目对主项目的引用类型:优先选择项目引用而非NuGet包引用(本地开发场景),如果必须用包引用,确保包包含对应的
.pdb符号文件。
2. 调整调试器符号与常规设置
- 打开Visual Studio的「工具」→「选项」→「调试」→「符号」:勾选「Microsoft符号服务器」,如果有本地生成的符号文件,可手动添加对应的文件夹路径。
- 切换到「调试」→「常规」:取消勾选启用仅我的代码,这个选项有时会让调试器跳过实际存在但暂时未匹配到的源文件。
3. 清理重建解决方案,确保符号文件生成
- 右键解决方案选择「清理解决方案」,然后手动删除所有项目的
bin和obj文件夹(或执行命令dotnet clean)。 - 右键解决方案选择「重建解决方案」,确保所有项目编译成功,且在Debug模式下生成了完整的
.pdb符号文件。
4. 检查测试项目的编译与适配器配置
- 打开测试项目属性→「生成」→「高级」:将「调试信息」设置为完整,确保生成的符号文件包含足够的调试信息。
- 更新测试框架的适配器版本:如果你用的是xUnit或NUnit,在NuGet包管理器中更新对应的适配器(比如
xUnit.runner.visualstudio),旧版本适配器可能和ASP.NET Core + net461的组合存在兼容性问题。
5. 手动映射源文件路径
当弹出「no source available」窗口时,点击「浏览查找源」,手动定位到主项目对应的.cs文件。调试器有时会因为路径映射偏差找不到源,手动指定一次后通常会自动记住映射关系。
内容的提问来源于stack exchange,提问作者Camilla Martins
相关产品推荐
相关产品推荐

