Похоже, проблема заключается в том, что вызов операции MSBuild фактически завершается успешно, в то время как инициируемая операция сборки завершается неудачей. Я смог обойти это, направив вывод вызова MSBuild в текстовый файл, а затем проанализировал файл на строку «Build Failed». Если он содержал строку, очевидно, что сборка не удалась.
Мой скрипт сборки PSake выглядит следующим образом:
properties {
$solutionFile = 'SOLUTION_FILE'
$buildSuccessfulMessage = 'Solution Successfully Built!'
$buildFailureMessage = 'Solution Failed to Build!'
$cleanMessage = 'Executed Clean!'
}
task default -depends Build
task Build -depends Clean {
msbuild $solutionFile /t:Build /p:Configuration=Release >"MSBuildOutput.txt"
}
task Clean {
msbuild $solutionFile /t:Clean
}
и в моем скрипте вызова:
function Check-BuildSuccess()
{
return (! (Find-StringInTextFile -filePath .\MSBuildOutput.txt -searchTerm "Build Failed"))
}
function Is-StringInTextFile
(
[string]$filePath = $(Throw "File Path Required!"),
[string]$searchTerm = $(Throw "Search Term Required!")
)
{
$fileContent = Get-Content $filePath
return ($fileContent -match $searchTerm)
}