在构建VS解决方案时,如何测试PowerShell中是否存在错误?

在构建VS解决方案时,如何测试PowerShell中是否存在错误?,powershell,msbuild,Powershell,Msbuild,我有以下用于构建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:

我有以下用于构建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
中充满了成功构建的详细信息。我宁愿找到一种方法来检查是否存在任何生成错误。

检查
$LASTEXITCODE
以获得合适的退出代码。通常,如果成功,这将是
0

$res = & $DevEnvExe $arguments
if ( $LASTEXITCODE -ne 0 ) {
  LogError
}

$res = & $MsBuildExe $arguments
if( $LASTEXITCODE -ne 0 ) {
  LogError
}

这可以扩展为检查从Powershell运行的任何程序的结果,而不仅仅是
devenv
msbuild
。虽然您需要了解哪些退出代码意味着成功、警告或其他条件,但您可能仍想考虑成功。

<代码> $LASTeXITCOD/<代码>包含您运行的最后一个程序的退出代码。谢谢。当我回到我的办公桌上时,我将进行测试。