Visual Studio 2019无法分析.NET Core应用代码覆盖率求助
解决VS2019 .NET Core代码覆盖率提示“Empty results generated”的经验
根据我处理这类问题的实际经验,结合你描述的情况(之前正常运行、测试仍通过但覆盖率失效、VS已升级到16.4.0),可以尝试以下几个排查和修复步骤:
- 确认项目框架与引用匹配:检查你的测试项目是否正确引用了主应用项目,且两者的目标.NET Core框架版本完全一致。VS升级过程中偶尔会导致项目框架配置漂移,这会让覆盖率工具找不到要插桩的二进制文件。
- 彻底清理重建解决方案:手动删除所有项目的
bin和obj文件夹,然后在VS中执行“清理解决方案”再“重建解决方案”。旧的缓存二进制文件或符号文件经常会干扰覆盖率分析。 - 确保符号文件完整可用:
- 打开主应用和测试项目的属性,进入“生成”->“高级”设置,将“调试信息”设置为完整(不要选“仅pdb”或“无”)。
- 检查项目输出目录(比如
bin/Debug/netcoreapp3.1),确认存在对应的.pdb文件,且文件时间是最新的重建时间。
- 检查覆盖率排除规则:点击VS顶部菜单的「测试」->「分析代码覆盖率设置」,在弹出的窗口中确保你的主应用程序集没有被添加到排除列表中。有时候误操作会把目标程序集排除,导致覆盖率无结果。
- 验证测试运行配置:
- 确保你是在调试模式下运行代码覆盖率分析(发布模式下默认不会生成完整符号,覆盖率工具无法工作)。
- 检查测试运行的目标平台(x64/x86)是否和项目的平台目标一致,不匹配的平台也会导致找不到二进制文件。
- 更新VS到稳定补丁版本或修复安装:VS2019 16.4.0是相对较早的版本,存在一些已知的覆盖率工具bug。建议你升级到VS2019的最新补丁版本(比如16.11.x,这是2019的最终支持版本),或者通过VS Installer执行“修复”操作,修复可能损坏的覆盖率工具组件。
- 匹配.NET Core SDK版本:确认你项目使用的.NET Core SDK版本与VS2019 16.4.0兼容(该VS版本对应支持的SDK主要是3.1.x系列)。如果项目使用了更高版本的SDK,可能会出现兼容性问题,尝试切换到匹配的SDK版本再测试。
内容的提问来源于stack exchange,提问作者Ala Eddine JEBALI
相关产品推荐
相关产品推荐

