【发布时间】:2017-11-17 11:07:23
【问题描述】:
我有一个在 VS2015 下运行的 ASP.NET Core 项目(目标为 .NETFramework,Version=v4.6.1)。 当我转换到 VS2017 时,我无法让 OpenCover 工作。 build.PS1 运行时
C:\OpenCover\4.6.519\tools\OpenCover.Console.exe -register:user -target:"C:\Program Files\dotnet\dotnet.exe" -targetargs:" 测试 "C:\GitRepos\AdminPortal\Source\test\AdminPortal.UnitTests\AdminPortal.UnitTests.csproj" " -输出:“C:\GitRepos\AdminPortal\Build..\OUTPUT\Test-Output\projectCoverageReport.xml” -log:详细 -oldStyle
输出(为简洁起见)如下:
C:\OpenCover\4.6.519\tools\OpenCover.Console.exe -register:user -target:"C:\Program Files\dotnet\dotnet.exe" -targetargs:" 测试 "C:\GitRepos\AdminPortal\Source\test\AdminPortal.UnitTests\AdminPortal.UnitTests.csproj" " -输出:“C:\GitRepos\AdminPortal\Build..\OUTPUT\Test-Output\projectCoverageReport.xml” -log:详细 -oldStyle 执行:C:\Program Files\dotnet\dotnet.exe
无法将 C:\Program Files\dotnet\sdk\1.0.3\dotnet.dll 检测为 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 没有 PDB/MDB 可以加载
无法将 RefEmit_InMemoryManifestModule 检测为否 可以加载 PDB/MDB 构建完成。试运行 C:\GitRepos\AdminPortal\Source\test\AdminPortal.UnitTests\bin\Debug\net461\AdminPortal.UnitTests.dll(.NETFramework,Version=v4.6.1) 无法检测 C:\Program Files\dotnet\sdk\1.0.3\vstest.console.dll 因为无法加载 PDB/MDB
无法检测 C:\Program Files\dotnet\sdk\1.0.3\Microsoft.TestPlatform.CoreUtilities.dll 为否 可以加载 PDB/MDB
无法检测 C:\Program 文件\dotnet\sdk\1.0.3\Microsoft.VisualStudio.TestPlatform.ObjectModel.dll 因为无法加载 PDB/MDB Microsoft (R) 测试执行命令 Line Tool 版本 15.0.0.0 版权所有 (c) Microsoft Corporation。全部 保留权利。无法检测 RefEmit_InMemoryManifestModule,因为没有 PDB/MDB 可以 被加载构建完成。试运行 C:\GitRepos\AdminPortal\Source\test\AdminPortal.UnitTests\bin\Debug\net461\AdminPortal.UnitTests.dll(.NETFramework,Version=v4.6.1) 无法检测 C:\Program Files\dotnet\sdk\1.0.3\vstest.console.dll 因为无法加载 PDB/MDB Microsoft (R) 测试执行命令 Line Tool 版本 15.0.0.0 版权所有 (c) Microsoft Corporation。全部 保留权利。开始测试执行,请稍候...
... 不能 仪器 C:\程序 Files\dotnet\sdk\1.0.3\TestHost\msdia140typelib_clr0200.dll 为否 可以加载 PDB/MDB
无法仪表 C:\GitRepos\AdminPortal\Source\test\AdminPortal.UnitTests\bin\Debug\net461\AdminPortal.exe 因为无法加载 PDB/MDB ...测试总数:39。通过:37。失败:0。跳过:2。测试运行 成功的。测试执行时间:6.4838 秒
提交...
没有结果,这可能有多种原因。这 最常见的原因是:
1) 缺少与过滤器匹配的程序集的 PDB,请查看 输出文件并参考使用指南 (Usage.rtf) 关于过滤器。
2) profiler可能没有正确注册,请参考Usage 指南和 -register 开关。
我在 bin 文件夹中有 .PDB 文件(例如 C:\GitRepos\AdminPortal\Source\test\AdminPortal.UnitTests\bin\Debug\net461\AdminPortal.pdb), 所以我不知道为什么 opencover 无法加载它。可能是什么原因?
我尝试指定 -targetdir:(如建议的 here ) 和 -oldStyle ,但没有区别。
我还尝试指定 -searchdirs: (来自https://github.com/sawilde/opencover/wiki/Usage)
并重新注册分析器
regsvr32 /n /i:user C:OpenCover.4.5.3723\x86\OpenCover.Profiler.dll(来自OpenCover/NUnit can't find PDB files)——也没什么区别。
是否与https://github.com/OpenCover/opencover/issues/610 中提到的新的便携式 PDB 格式有关?
但我的目标是 NETFramework v4.6.1,而不是 Core 1.1。我可以明确指定 dotnet test 或 msbuild 使用哪种 PDB 格式吗?
是否有任何工具可以显示,.PDB 文件是旧格式还是新格式? 我按照Reading a .pdb file 的建议尝试了https://github.com/Microsoft/microsoft-pdb/blob/master/cvdump/cvdump.exe, 但它不返回任何东西。
【问题讨论】:
标签: asp.net-core .net-core pdb-files opencover