Немедленно прекратите обработку MSBuild при ошибках компиляции

Я написал командный файл, который при выполнении создает решение Visual Studio. Решение состоит из нескольких проектов C#. Я использую утилиту MSBuild для этого. Как я могу остановить дальнейшую сборку, если в любом из проектов есть ошибки компиляции? Далее, как я могу получить сообщения об ошибках и отобразить их в командной строке?

2 ответа

Решение

При создании визуального студийного решения не поддерживается остановка при первом сбое.

Вы можете обойти это, выполнив следующие действия:

  1. Установите для переменной среды msbuildemitsolution значение 1 (set msbuildemitsolution=1);
  2. Вызовите MSBuild, чтобы сгенерировать файл *.proj из целевого решения VS;
  3. В сгенерированном *.sln.proj изменении файла RunEachTargetSeparately="true" в цели с именем Build to RunEachTargetSeparately="false";
  4. Вызовите 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%
Другие вопросы по тегам