MSBuild в скрипте Powershell - Как узнать, что сборка прошла успешно? - PullRequest
30 голосов
/ 25 октября 2010

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

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

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

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

Ответы [ 2 ]

38 голосов
/ 25 октября 2010

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

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

10 голосов
/ 25 октября 2010

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

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" }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...