Batch Scripting - вывести вывод msbuild в определенный файл, а не в окно консоли, если успешно? - PullRequest
3 голосов
/ 27 июля 2011

Я не уверен, как это сделать. У меня есть файл пакетного сценария, который я использую для выполнения нескольких вызовов msbuild. Я не хочу, чтобы вывод msbuild загрязнял мое командное окно, но вместо этого я хочу, чтобы он выгружался в файл журнала. Я не уверен, как это сделать, но вот мой сценарий:

@ECHO Building shared libraries ...

msbuild "SharedLibraries.sln"
:: Not sure how to catch an unsuccessful build here for my GOTO ERROR?
:: Copy dll files to specific location

@ECHO Building primary application...

msbuild "Myapp.sln"
:: Not sure how to catch an unsuccessful build here for my GOTO ERROR?

:ERROR

Итак, как мне:

  1. Дамп вывода msbuild в файл журнала?
  2. Поймать неудачные сборки и перейти к метке ошибки?

1 Ответ

11 голосов
/ 27 июля 2011

Добавление ключа командной строки /fileLogger приводит к тому, что MSBuild записывает выходные данные сборки в файл msbuild.log в текущем каталоге, а переключатель /noconsolelogger приводит к тому, что MSBuild больше не выполняет запись в стандартный вывод. Имя файла можно установить с помощью переключателя /flp, как показано в следующем примере:

msbuild "SharedLibraries.sln" /nologo /noconsolelogger /fileLogger /flp:logfile=buildlog.txt

Подробнее см. Справочник по командной строке MSBuild .

Относительно вашего второго вопроса; MSBuild возвращает ненулевой код завершения, если сборка не удалась, который можно обработать как обычно:

msbuild "SharedLibraries.sln" /nologo /noconsolelogger /fileLogger /flp:logfile=SharedLibraries.log
if not errorlevel 0 goto ERROR

msbuild "Myapp.sln" /nologo /noconsolelogger /fileLogger /flp:logfile=Myapp.txt
if not errorlevel 0 goto ERROR

:ERROR
...