存在 pdb 时 OpenCover 报告缺少 pdb (XUnit/.NET Core)

OpenCover Reports missing pdbs when pdbs are present (XUnit/.NET Core)

我正在使用 OpenCover 为我的项目生成测试覆盖率报告,但它没有生成任何数据。检查我的日志,显示有问题的 dll "missing pdb",但是 pdb 在同一目录中可用。

我尝试过的事情:

  1. 我已经尝试使用 -searchdirs 选项显式添加带有 pdb 的目录 - 没有区别。
  2. 我已经检查过,看起来 XUnit 不执行 dll 的影子复制,所以它们是从正确的目录访问的。 opencover results.xml 支持我这一点。

我正在使用

的命令行
opencover.console -oldstyle -register:user 
                  -target:"C:\Program Files\Dotnet\dotnet.exe" 
                  -targetargs:"test" 
                  -searchdirs:"C:\dev\public\hermes-c#\Hermes.Server\Hermes.AspNetCore.Test\bin\Debug\netcoreapp1.0"

感谢所有想法!

.NET Core 默认使用 "Portable PDB" 格式,OpenCover 不理解 yet.

尝试使用以下构建选项:

"buildOptions": {
  "debugType": "full"
},

注意: 使用 full 时生成的调试符号仅适用于 Windows...

更新: 对于基于 MSBuild 的项目,这将变为:

<PropertyGroup>
  <DebugType>full</DebugType>
</PropertyGroup>

而且,我们也可以使用 /p:DebugType=Full 开关进行构建。因此,"ordinary" 构建可以使用默认调试设置,但是用于覆盖分析的 "special" 构建可以将其更改为完整。