Немедленно прекратите обработку MSBuild при ошибках компиляции
Я написал командный файл, который при выполнении создает решение Visual Studio. Решение состоит из нескольких проектов C#. Я использую утилиту MSBuild для этого. Как я могу остановить дальнейшую сборку, если в любом из проектов есть ошибки компиляции? Далее, как я могу получить сообщения об ошибках и отобразить их в командной строке?
2 ответа
При создании визуального студийного решения не поддерживается остановка при первом сбое.
Вы можете обойти это, выполнив следующие действия:
- Установите для переменной среды msbuildemitsolution значение 1 (
set msbuildemitsolution=1
); - Вызовите MSBuild, чтобы сгенерировать файл *.proj из целевого решения VS;
- В сгенерированном *.sln.proj изменении файла
RunEachTargetSeparately="true"
в цели с именем Build toRunEachTargetSeparately="false"
; - Вызовите MSBuild для создания обновленного файла *.sln.proj.
Этот ответ основан на ответе Дэна Мозли на пост на форумах MSDN.
Было бы проще дать вам ответ, если бы вы опубликовали соответствующие части своего пакетного файла. Тем не менее, для вашей второй части вопроса, вот пример, как я решил почти ту же проблему в одном из наших скриптов сборки:
msbuild.exe /m /p:Configuration=Release /v:n theSolutionFile.sln >Build.log
if ERRORLEVEL 1 goto :showerror
find "0 Warn" Build.log >nul:
if ERRORLEVEL 1 goto :showerror
goto :EOF
:showerror
echo Build error occurred
exit %ERRORLEVEL%