Немедленно остановите обработку MSBuild при ошибках компиляции - PullRequest
9 голосов
/ 15 марта 2011

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

Ответы [ 2 ]

5 голосов
/ 15 марта 2011

Нет поддержки остановки при первом сбое при создании решения для Visual Studio.

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

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

Этот ответ основан на Дэн Мозли ответ на сообщение на форумах MSDN .

3 голосов
/ 15 марта 2011

Было бы проще дать вам ответ, если бы вы опубликовали соответствующие части своего пакетного файла. Тем не менее, для вашей второй части вопроса, вот пример, как я решил почти ту же проблему в одном из наших скриптов сборки:

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%
...