次のコードを使用して、TFS 2015 のビルド プレビューで powershell スクリプト タスクからカバレッジ レポートを生成しています。ビルド サーバーで実行すると、レポートが正しく生成されますが、ビルドの一部として実行すると、pdb ファイルがないというエラーが表示されます。
結果はありません。これにはいくつかの理由が考えられます。最も一般的な理由は次のとおりです。
1) フィルターに一致するアセンブリの PDB が見つからない 出力ファイルを確認し、フィルターについては使用ガイド (Usage.rtf) を参照してください。
2) プロファイラーが正しく登録されていない可能性があります。使用ガイドと -register スイッチを参照してください。
少しグーグルを行った後、 /noshadow で十分であることを発見しましたが、 nunit のパラメーターが無視されているようです。/nologo コマンドは著作権情報を印刷から除外する必要があるため、無視されていると思いますが、コンソール出力では、表示されている情報を引き続き確認できます。
また、作業ディレクトリとしてビルド出力ディレクトリを使用すると、これも修正されるはずですが、Set-Location を使用してもビルド中に問題は解決しませんでした。
これは私が現在実行しているスクリプトです:
Param
(
[string] $SourceDir = $env:BUILD_SOURCESDIRECTORY,
[string] $UnitTestDir = "",
[string] $UnitTestDll ="",
[string] $Filter = "",
[string] $ExcludeByAttribute = "System.CodeDom.Compiler.GeneratedCodeAttribute",
[string] $nUnitOutputPath = "Output.txt",
[string] $nUnitErrorOutputPath = "Error.text",
[string] $XmlOutputPath = "_CodeCoverageResult.xml",
[string] $ReportOutputPath = "_CodeCoverageReport"
)
$openCoverPath = "E:\BuildTools\OpenCover.4.5.3723\OpenCover.Console.exe"
$nUnitPath = "E:\BuildTools\NUnit.Runners.2.6.4\tools\nunit-console.exe"
$reportGeneratorPath = "E:\BuildTools\ReportGenerator.2.1.1.0\ReportGenerator.exe"
$nUnitArgs = "$SourceDir\$UnitTestDir\$UnitTestDll /noshadow /nologo"
Write-Host "[Debug] Setting location to $SourceDir\$UnitTestDir"
Set-Location $SourceDir\$UnitTestDir
if (!(Test-Path $SourceDir\CodeCoverage)) {
New-Item $SourceDir\CodeCoverage -type directory
}
Write-Host "[Debug] Running unit tests from $SourceDir\$UnitTestDir\$UnitTestDll"
Write-Host "[Debug] Command: $openCoverPath -target:$nUnitPath -targetargs:""$nUnitArgs"" -filter:$Filter -excludebyattribute:$ExcludeByAttribute -register:user -output:""$SourceDir\CodeCoverage\$XmlOutputPath"""
& $openCoverPath -target:$nUnitPath -targetargs:"$nUnitArgs" -filter:$Filter -excludebyattribute:$ExcludeByAttribute -register:user -output:"$SourceDir\CodeCoverage\$XmlOutputPath"
Write-Host "[Debug] Generating report"
Write-Host "[Debug] Command: $reportGeneratorPath ""-reports:$SourceDir\CodeCoverage\$XmlOutputPath"" ""-targetdir:$SourceDir\CodeCoverage\$ReportOutputPath"""
& $reportGeneratorPath -reports:$SourceDir\CodeCoverage\$XmlOutputPath -targetdir:$SourceDir\CodeCoverage\$ReportOutputPath
Write-Host "[Debug] Finished running tests and generating report"