我具有以下用于构建VS解决方案的PowerShell脚本。这可行,但是,我需要测试的是构建成功还是失败。如何从PS脚本中判断构建是否失败?
代码
[string] $res = $null
$log = "buildlog.txt"
$DevenvExe = 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\devenv.exe'
$MsBuildExe = 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\msbuild.exe'
$SolutionPath = ".\MyLocalSolution.sln"
#... There's some code here...
###########################
# BRANCH - ATTEMPT COMPILE
###########################
$res = & $DevenvExe $SolutionPath /upgrade /out $res
LogError
$res = & $MsBuildExe $SolutionPath /p:Configuration=Release /nr:false /m:4
LogError
注意:LogError
是用于检查$ res值的函数。如果$ res为空,则认为没有错误。这是为在构建之上发生的某些命令而设置的。当然,我可以更改构建过程检查错误的方式。实际上,这就是我要问的。当前$res
充满了成功的构建详细信息。我宁愿找到一种方法来检查是否有任何构建错误。
答案 0 :(得分:1)
检查$LASTEXITCODE
以获取合适的退出代码。通常,这将是成功的0
。
$res = & $DevEnvExe $arguments
if ( $LASTEXITCODE -ne 0 ) {
LogError
}
$res = & $MsBuildExe $arguments
if( $LASTEXITCODE -ne 0 ) {
LogError
}
这可以扩展为检查从Powershell运行的任何程序的结果,而不仅仅是devenv
或msbuild
。尽管您将需要了解哪些退出代码表示成功,警告或其他情况,但您可能仍要考虑成功。