OpenCover 无法检测.exe因为无法加载 PDB/MDB



我有一个 ASP.NET 核心项目(目标为 .NETFramework,版本=v4.6.1),在VS2015下工作。 当我转换为VS2017时,我无法使OpenCover工作。 当 build.PS1 运行时

C:\OpenCover\4.6.519\tools\OpenCover.Console.exe -register:user -target:"C:\Program Files\dotnet\dotnet.exe" -targetargs:" test "C:\GitRepos\AdminPortal\Source\test\AdminPortal.UnitTests\AdminPortal.UnitTests.csproj" " -output:"C:\GitRepos\AdminPortal\Build..\输出\测试输出\项目覆盖率报告.xml" -日志:详细 -旧风格

输出(为简洁起见被截断)如下:

C:\OpenCover\4.6.519\tools\OpenCover.Console.exe -register:user -target:"C:\Program Files\dotnet\dotnet.exe" -targetargs:" test "C:\GitRepos\AdminPortal\Source\test\AdminPortal.UnitTests\AdminPortal.UnitTests.csproj" " -output:"C:\GitRepos\AdminPortal\Build..\输出\测试输出\项目覆盖率报告.xml" -log:Verbose -oldStyle Executing: C:\Program Files\dotnet\dotnet.exe
无法检测 C:\Program Files\dotnet\sdk\1.0.3\dotnet.dll as no 可以加载 PDB/MDB ... 无法检测 C:\Program Files\dotnet\sdk\1.0.3\Microsoft.TestPlatform.Build.dll 作为无 PDB/MDB 可以加载
构建已开始,请稍候...

无法检测 C:\Program Files\dotnet\sdk\1.0.3\NuGet.Packaging.dll as no PDB/MDB 可以加载
无法检测RefEmit_InMemoryManifestModule 因为没有 可以加载 PDB/MDB 构建完成。

的测试运行 C:\GitRepos\AdminPortal\Source\test\AdminPortal.UnitTests\bin\Debuget461\AdminPortal.UnitTests.dll(.NETFramework,版本=v4.6.1) 无法检测 C:\Program Files\dotnet\sdk\1.0.3\vstest.console.dll 因为无法加载 PDB/MDB
无法检测 C:\程序 Files\dotnet\sdk\1.0.3\Microsoft.TestPlatform.CoreUtilities.dll as no 可以加载 PDB/MDB
无法检测 C:\程序 Files\dotnet\sdk\1.0.3\Microsoft.VisualStudio.TestPlatform.ObjectModel.dll 因为无法加载 PDB/MDB Microsoft (R) 测试执行命令 直线工具版本 15.0.0.0 版权所有 (c) Microsoft公司。 都 版权。

无法检测RefEmit_InMemoryManifestModule,因为没有 PDB/MDB 可以 已加载 构建完成。的测试运行 C:\GitRepos\AdminPortal\Source\test\AdminPortal.UnitTests\bin\Debuget461\AdminPortal.UnitTests.dll(.NETFramework,版本=v4.6.1) 无法检测 C:\Program Files\dotnet\sdk\1.0.3\vstest.console.dll 因为无法加载 PDB/MDB Microsoft (R) 测试执行命令 直线工具版本 15.0.0.0 版权所有 (c) Microsoft公司。 都 版权。正在开始测试执行,请稍候...
。不能 仪器 C:\程序 Files\dotnet\sdk\1.0.3\TestHost\msdia140typelib_clr0200.dll as no 可以加载 PDB/MDB
无法检测 C:\GitRepos\AdminPortal\Source\test\AdminPortal.UnitTests\bin\Debuget461\AdminPortal.exe 因为无法加载 PDB/MDB...

总测试:39。通过:37。失败:0。跳过:2。测试运行 成功的。测试执行时间:6.4838 秒

犯。。。
没有结果,这可能是由于多种原因。这 最常见的原因是:
1) 缺少与筛选器匹配的程序集的 PDB,请查看 输出文件,并参阅有关过滤器的使用指南(用法.rtf)。
2) 分析器可能未正确注册,请参阅用法 指南和 -寄存器开关。

我有.bin 文件夹中的 PDB 文件(例如 C:\GitRepos\AdminPortal\Source\test\AdminPortal.UnitTests\bin\Debuget461\AdminPortal.pdb), 所以我不知道为什么 opencover 无法加载它。可能是什么原因?

我试图指定 -targetdir:(如此处建议的)和 -oldStyle ,但它没有区别。
我还尝试指定 -searchdirs:(从 https://github.com/sawilde/opencover/wiki/Usage) 并重新注册探查器regsvr32 /n /i:user C:OpenCover.4.5.3723x86OpenCover.Profiler.dll(从OpenCover/NUnit找不到PDB文件) - 也没有区别。

它与 https://github.com/OpenCover/opencover/issues/610 中提到的新的便携式PDB格式有关吗?
但我的目标是NETFramework v4.6.1,而不是Core 1.1。 我可以显式指定dotnet testmsbuild使用哪种 PDB 格式吗?

是否有任何工具可以显示,.PDB文件有旧的或新的格式? 我按照读取.pdb文件中的建议尝试 https://github.com/Microsoft/microsoft-pdb/blob/master/cvdump/cvdump.exe, 但它不会返回任何内容。

在不相关的讨论中 https://developercommunity.visualstudio.com/content/problem/15197/vs2017rc-locks-files-in-obj-folder-blocking-builds.html 有人建议 将项目属性中的 PDB 格式从"可移植 PDB"更改为"完整 PDB"。
如果您更喜欢使用UI,请在Visual Studio中打开 项目属性->生成->高级>输出>调试信息从可移植更改为完整。 它将添加到具有特定构建条件的 csproj 文件设置

<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|netstandard1.6|AnyCPU'">
<DebugType>full</DebugType>
<DebugSymbols>True</DebugSymbols>
</PropertyGroup>

通常,您希望将其应用于所有选项,因此删除条件以仅具有以下内容(如果您以前没有使用Visual Studio,则可以将下面的PropertyGroup粘贴到.csproj)

<PropertyGroup >
<DebugType>full</DebugType>
<DebugSymbols>True</DebugSymbols>
</PropertyGroup>

OpenCover将能够检测您的项目。

2019年4月19日更新:由于OpenCover仍然没有.net核心支持#595,请考虑使用具有OpenCover兼容输出格式的CoverLet。

相关内容

  • 没有找到相关文章

最新更新