我想作爲this blog post from the code analysis team描述到Visual Studio代碼覆蓋率文件(data.coverage)導出到XML。我已經將該帖子中的代碼示例移到了一個自定義的MSBuild任務中。我的自定義任務引用位於Visual Studio的PrivateAssemblies文件夾中的Microsoft.VisualStudio.Coverage.Analysis.dll。合併Visual Studio代碼覆蓋率失敗ImageNotFoundException
立即嘗試加載代碼覆蓋率文件會拋出代碼分析類型異常ImageNotFoundException,指出「圖像文件完全限定文件路徑到dll無法找到」。
// the following line throws an exception
CoverageInfo current =
CoverageInfo.CreateFromFile("c:\path\testresults\x\y\z\data.coverage");
該路徑是完全限定的並且它引用的DLL確實存在。我的測試設置將此文件列爲儀器組件,並設置了「儀器就位」複選框。我可以在Visual Studio中查看代碼覆蓋範圍,所以我知道覆蓋範圍正在工作。
我從Visual Studio從命令行運行的MSBuild我的腳本。它看起來像這樣:
<Project ToolsVersion="4.0" DefaultTargets="Default;"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<UsingTask TaskName="CustomTasks.MergeCoverageTask"
AssemblyFile="CustomTasks.dll"
/>
<Target Name="Default">
<ItemGroup>
<CoverageFiles Include="**\data.coverage" />
</ItemGroup>
<MergeCoverageTask
CoverageFiles="@(CoverageFiles)"
OutputFile="output.xml"
/>
</Target>
</Project>
任何人都可以建議我需要做什麼才能正確工作?
+1和謝謝......救了我幾個小時,即使沒有其他人先得到答案! –
+1還有一點,您必須添加引用(或複製dll,如Microsoft.VisualStudio.Coverage.Analysis.dll,Microsoft.VisualStudio.Coverage.Symbols.dll,dbghelp.dll)的地方不在您的主項目文件,但使用CoverageInfo類的文件。我花了一些時間來找出在哪裏添加引用。 Out文件夾中也不應該有任何尾隨的'\'。例如c:\ project \ testresults \ x \ Out \將導致錯誤。 –
我有MS2013Pro版,並且沒有PrivateAssemblies文件夾中的Symbols.dll文件。請幫助!! – adeel41