powershell - 当我构建VS解决方案时,如何测试PowerShell是否有错误?

标签 powershell msbuild

我有以下 PowerShell 脚本用于构建 VS 解决方案。这是可行的,但是,我需要测试的是构建是否成功或失败。如何从 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 运行的任何程序的结果,而不仅仅是 devenvmsbuild。尽管您需要了解哪些退出代码意味着成功、警告或其他条件,但您可能仍希望将其视为成功。

关于powershell - 当我构建VS解决方案时,如何测试PowerShell是否有错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51270854/

相关文章:

regex - 在 Powershell 中使用正则表达式匹配 $$

c# - 如何从命令行或 C# 应用程序检测 msbuild 的状态

typescript - 项目 '<project name>' 不是最新的。输入文件 '<static file>' 在输出文件 '' 之后被修改

powershell - 在PowerShell脚本中返回解析函数

powershell - 请解释一下,将字符串添加到文件第一行的函数

sql-server - 将数组中的 PowerShell 值插入到 SQL Server 表中

visual-studio-2010 - 如何将命令行代码生成器添加到 Visual Studio?

powershell - 使用 ARM 输出或 powershell 获取 Azure Function 默认 key 的方法

visual-studio - 警告MSB8028:中间目录(Debug\)包含从另一个项目共享的文件

regex - 为什么 $([System.Text.RegularExpressions.Regex]::IsMatch()) 在 ItemGroupDefinition 中计算一次?