Подтвердить что ты не робот

MSBuild в Powershell Script - Как узнать, удалось ли построить?

Я пишу сборку script с помощью Powershell. Сценарии выполняют различные операции, такие как получение самого последнего исходного кода из SVN, резервных копий и т.д., И строит решение с помощью MSBuild:

cmd /c C:\WINDOWS\Microsoft.NET\Framework\v3.5\msbuild.exe "C:\Dev\Path\MyProjct.sln" /p:Configuration=Release 

После этой команды я хочу выполнить оставшуюся часть script, если компиляция завершилась успешно. Как я могу проверить это?

Проект представляет собой веб-проект, поэтому не так просто проверить вывод, но я бы предположил, что некоторые переменные будут содержать результат компиляции. Кроме того, поскольку я вызываю msbuild с cmd/c, могу ли я получить доступ к этим переменным?

4b9b3361

Ответ 1

Проверьте значение $LastExitCode сразу после вызова MSBUILD. Если это 0, то MSBUILD преуспел, иначе он не удался.

Кстати, нет необходимости использовать cmd/c. Просто вызовите MSBUILD.exe напрямую. Мы делаем это в скриптах сборки PowerShell все время.

Ответ 2

Чтобы просто проверить успех/сбой, используйте автоматическую переменную $?.

PS> help about_Automatic_Variables


    $?
       Contains the execution status of the last operation. It contains
    TRUE if the last operation succeeded and FALSE if it failed.

например:

msbuild
if (! $?) { throw "msbuild failed" }