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

迈克尔·弗雷基姆

我有一个在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“” -output:“ 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“” -output:“ C:\ GitRepos \ AdminPortal \ Build .. \ OUTPUT \ Test-Output \ projectCoverageReport.xml” -log:Verbose -oldStyle执行:C:\ Program Files \ dotnet \ dotnet.exe
无法检测到C:\ Program Files \ dotnet \ sdk \ 1.0.3 \ dotnet.dll,因为无法加载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 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 \ 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)测试执行命令行工具版本15.0.0.0版权所有(c)Microsoft Corporation。版权所有。开始执行测试,请稍候...
...无法检测C:\ Program 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)分析器可能未正确注册,请参阅《使用指南》和-register开关。

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

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

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

有可用的工具来显示.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,请考虑使用CoverLet(具有与OpenCover兼容的输出格式)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法压缩访问MDB

启用/禁用MDB加载或如果MDB无法连接到服务器则忽略部署错误

无法在MDB中同时处理消息

无法与OLEDB与MS Access(.mdb文件)连接

Unity错误“ Visual Studio工具:无法转换调试符号,没有pdb2mdb”

无法让OpenCover伪造

为什么Access 2013无法打开.mdb文件?

设置密码后无法从VBA连接到MDB

无法调试解决方案中的所有项目,因为 PDB 未正确加载

Jenkins - OpenCover 批处理命令无法找到 pdb 文件

在已安装文件上执行mdb-export时,“无法分配文件名”

当JBoss由于其他系统故障而无法处理消息时,如何停止MDB

无法加载PDB符号(未加载igvk32.pdb)

无法将MDB链接到Wildfly 10.x上的入站资源适配器-部署失败

无法加载rJava,因为无法加载共享库

无法加载phpmodule,因为找不到它

无法配置空间,因为它无法检测到 PROJ (libproj)

项目无法生成,因为它无法加载程序集

我无法加载模型,因为无法放置PosixPath

无法加载子组件的属性,因为尚未加载变量?

运行Visual-D项目时“无法加载PDB”

System.Data.Odbc.OdbcException (0x80131937) 发布后,我无法使用 Odbc 功能读取、删除和写入访问 mdb 文件

如何检测无法在Elm中加载图像

检测图像何时无法在Javascript中加载

无法检测窗口是否已加载

未检测到的Chromedriver无法正确加载

VS代码“无法找到或打开PDB文件”,即使pdb存在并且加载了其他csproj pdb文件

DOMException:无法加载,因为找不到支持的源

无法加载资源(.resx)文件,因为它不受信任