कोई फर्क नहीं पड़ता कि मैं कैसे की कोशिश की, त्रुटि हमेशा 0 रहता है जब भी msbuild विफल रहा। इसलिए मैंने अपना वर्कअराउंड बनाया:
प्रोजेक्ट बनाएँ और लॉग को बिल्ड.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