2017-06-15 470 views
2

我有一个在VS2015下工作的ASP.NET Core项目(目标为.NETFramework,版本= v4.6.1)。 当我转换为VS2017时,我无法使OpenCover正常工作。 当build.PS1运行OpenCover由于无法加载PDB/MDB,因此无法安装.exe

C:\ OpenCover \ 4.6.519 \工具\ OpenCover.Console.exe -register:用户 -target: “C:\ Program Files文件\ DOTNET \ dotnet.exe” - targetargs:“test”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:“test”C:\ GitRepos \ AdminPortal \ Unit \ Test \ Output \ projectCoverageReport.xml“ -log:”C:\ GitRepos \ AdminPortal \ Build \ Verbose -oldStyle执行:C:\ Program Files \ dotnet \ dotnet.exe
无法将C:\ Program Files \ dotnet \ sdk \ 1.0.3 \ dotnet.dll设为 PDB/MDB可能被加载 ... Can not instrument C:\ Program Files \ dotnet \ sdk \ 1.0.3 \ Microsoft.TestPlatform.Build.dll as no PDB/MDB could be l oaded
构建开始,请稍候...
...
无法仪表 C:\ Program Files文件\ DOTNET \ SDK \ 1.0.3 \ NuGet.Packaging.dll因为没有PDB/MDB 可以加载
无法将RefEmit_InMemoryManifestModule设为 PDB/MDB可以加载构建完成。

试运行 C:\ GitRepos \ AdminPortal \来源\测试\ AdminPortal.UnitTests \ BIN \调试\ net461 \ AdminPortal.UnitTests.dll(.NETFramework,版本= 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可以加载微软(R )测试执行C ommand 行工具版本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)测试执行命令 行工具版本15.0.0.0版权所有(c)Microsoft Corporation。全部 保留所有权利。开始测试执行,请稍候...
...无法 仪器C:\ PROGRAM 文件\ DOTNET \ SDK \ 1.0.3 \ TestHost \ msdia140typelib_clr0200.dll因为没有 PDB/MDB可以加载
不能仪表 C:\ GitRepos \ AdminPortal \来源\测试\ AdminPortal。单元测试\ BIN \调试\ net461 \ AdminPortal.exe 因为没有PDB/MDB可以加载...

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

承诺...
没有结果,这可能是由于多种原因。 最常见的原因有:
1)缺少匹配过滤器的程序集的PDB,请查看 输出文件,并参考有关过滤器的使用指南(Usage.rtf)。
2)探查器可能没有正确注册,请参考使用说明 指南和-register开关。

我在bin文件夹中的.pdb文件(例如C:\ GitRepos \ AdminPortal \来源\测试\ AdminPortal.UnitTests \ BIN \调试\ 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) - 也没有区别。

是否涉及到便携式PDB格式https://github.com/OpenCover/opencover/issues/610中提到?
但我的目标是NETFramework v4.6.1,而不是Core 1.1。我可以明确指定dotnet testmsbuild,使用哪种PDB格式?

是否有任何工具可以显示,.PDB文件是旧的还是新的格式? 我试过https://github.com/Microsoft/microsoft-pdb/blob/master/cvdump/cvdump.exe,建议在Reading a .pdb file, 但它不返回任何东西。

回答

1

在无关的讨论https://developercommunity.visualstudio.com/content/problem/15197/vs2017rc-locks-files-in-obj-folder-blocking-builds.html有人建议 将项目属性中的PDB格式从Portable PDB更改为Full PDB。
如果您更愿意使用UI,请在Visual Studio中打开 项目属性 - >生成 - >高级 - >输出 - >调试信息从便携改为完全。 这将增加的csproj文件与特定的构建条件设置

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

通常要应用它所有选项,所以删除的条件有只以下的(你可以只粘贴到您的.csproj中的PropertyGroup ,如果您以前没有使用Visual Studio)

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

而且OpenCover将能够测试您的项目。

+0

对于所有在'核心'上运行opencover都存在问题的用户,仅供参考:仪器仪表也存在一个已知问题 - '核心'运行时与'正常'运行时不同,当opencover改进了更好的仪器时,在'核心'仪器。为了能够测试'核心'运行时,'-oldstyle'参数**必须**传递给opencover,以使其使用旧的仪器方法。请参阅[问题601](https://github.com/OpenCover/opencover/issues/601)和[问题595](https://github.com/OpenCover/opencover/issues/595)以获取详细信息并了解何时它是固定的。 – quetzalcoatl

相关问题