【问题标题】:How can I test whether there were errors in PowerShell when I build a VS solution?构建 VS 解决方案时如何测试 PowerShell 中是否存在错误?
【发布时间】:2018-07-10 17:10:36
【问题描述】:

我有以下用于构建 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 包含您运行的最后一个程序的退出代码。

标签: powershell msbuild


【解决方案1】:

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

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

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

这可以扩展为检查从 Powershell 运行的任何程序的结果,而不仅仅是devenvmsbuild。尽管您需要了解哪些退出代码表示成功、警告或其他条件,但您可能仍希望将其视为成功。

【讨论】:

  • 谢谢。回到办公桌后进行测试。
猜你喜欢
  • 2015-02-08
  • 2011-12-24
  • 1970-01-01
  • 1970-01-01
  • 2017-08-03
  • 1970-01-01
  • 2013-07-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多