Tidak peduli bagaimana saya mencoba, tingkat kesalahan selalu tetap 0 bahkan ketika msbuild gagal. Jadi saya membangun solusi saya:
Bangun Proyek dan simpan log ke Build.log
SET Build_Opt=/flp:summary;logfile=Build.log;append=true
msbuild "myproj.csproj" /t:rebuild /p:Configuration=release /fl %Build_Opt%
cari string "0 Error" di build log, atur hasilnya ke var
FOR /F "tokens=* USEBACKQ" %%F IN (`find /c /i "0 Error" Build.log`) DO (
SET var=%%F
)
echo %var%
dapatkan karakter terakhir, yang menunjukkan berapa banyak baris berisi string pencarian
set result=%var:~-1%
echo "%result%"
jika string tidak ditemukan, maka error> 0, build gagal
if "%result%"=="0" ( echo "build failed" )
Solusi itu terinspirasi oleh posting Mechaflash di Cara mengatur output perintah sebagai variabel dalam file batch
dan https://ss64.com/nt/syntax-substring.html