2017-06-15 468 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

相關問題