Nasıl denediğim önemli değil, msbuild başarısız olsa bile hata seviyesi her zaman 0 olarak kalır. Bu yüzden geçici çözümümü oluşturdum:
Proje oluşturma ve günlüğü Build.log dosyasına kaydetme
SET Build_Opt=/flp:summary;logfile=Build.log;append=true
msbuild "myproj.csproj" /t:rebuild /p:Configuration=release /fl %Build_Opt%
build log'da "0 Error" dizesini arayın, sonucu var olarak ayarlayın
FOR /F "tokens=* USEBACKQ" %%F IN (`find /c /i "0 Error" Build.log`) DO (
SET var=%%F
)
echo %var%
arama dizesini kaç satır içerdiğini gösteren son karakteri al
set result=%var:~-1%
echo "%result%"
dize bulunamazsa, hata> 0, derleme başarısız oldu
if "%result%"=="0" ( echo "build failed" )
Bu çözüm, Mechaflash'ın bir toplu iş dosyasında komut çıktısını değişken olarak ayarlama konusundaki gönderisinden ilham aldı
ve https://ss64.com/nt/syntax-substring.html