Cho dù tôi đã cố gắng như thế nào, errorlevel luôn ở mức 0 ngay cả khi msbuild không thành công. Vì vậy, tôi đã xây dựng cách giải quyết của mình:
Xây dựng dự án và lưu nhật ký vào Build.log
SET Build_Opt=/flp:summary;logfile=Build.log;append=true
msbuild "myproj.csproj" /t:rebuild /p:Configuration=release /fl %Build_Opt%
tìm kiếm chuỗi "0 Error" trong nhật ký xây dựng, đặt kết quả thành var
FOR /F "tokens=* USEBACKQ" %%F IN (`find /c /i "0 Error" Build.log`) DO (
SET var=%%F
)
echo %var%
lấy ký tự cuối cùng, cho biết có bao nhiêu dòng chứa chuỗi tìm kiếm
set result=%var:~-1%
echo "%result%"
nếu không tìm thấy chuỗi, thì lỗi> 0, xây dựng thất bại
if "%result%"=="0" ( echo "build failed" )
Giải pháp đó được lấy cảm hứng từ bài đăng của Mechaflash tại Cách đặt đầu ra lệnh dưới dạng một biến trong tệp bó
và https://ss64.com/nt/syntax-subopes.html