Як би я не намагався, рівень помилок завжди залишається 0, навіть коли msbuild не вдалося. Тому я побудував своє вирішення:
Створіть проект і збережіть журнал до Build.log
SET Build_Opt=/flp:summary;logfile=Build.log;append=true
msbuild "myproj.csproj" /t:rebuild /p:Configuration=release /fl %Build_Opt%
шукайте рядок "0 Помилка" у журналі збору, встановіть результат на var
FOR /F "tokens=* USEBACKQ" %%F IN (`find /c /i "0 Error" Build.log`) DO (
SET var=%%F
)
echo %var%
отримати останній символ, який вказує, скільки рядків містить рядок пошуку
set result=%var:~-1%
echo "%result%"
якщо рядок не знайдено, то помилка> 0, збірка не вдалася
if "%result%"=="0" ( echo "build failed" )
Це рішення було натхнене публікацією Мечафлаша в " Як встановити команди виведення у вигляді змінної в пакетному файлі
та https://ss64.com/nt/syntax-substring.html