У меня есть партия, которая продолжает терпеть неудачу через TFS с выходом -1
.Как пакетный выход с -1 с MSBuild в потоке сборки TFS, когда нет отрицательных выходов внутри серии партий
Партия, получившая вызов, не имеет отрицательных выходов. Он вызывает вместо запуска непосредственно некоторые другие партии и инструменты командной строки, которые могут возвращать отрицательный код выхода, но они все call
Е.Д., не побежал прямо, и когда я установить точку отказа, я exit /b 1
или exit 1
.... target (350): команда «call C: \ Build \ BuildTools \ callSigning.bat» вышла с кодом -1.
Демонтаж в сбое и запуск партии там не вызывает ошибки!
Что может быть вызвано этим exit -1
с MSBuild? Есть ли какие-то странные закулисные замечания, о которых я просто не знаю?
Внутри файла .proj, я получил строку:
<Exec Command="call $(SrcRoot)\BuildTools\callSigning.bat" ContinueOnError="false"/>
И что партия не имеет отрицательных кодов выхода ...
@echo off
pushd %~dp0
IF EXIST "%~dp0signVerification.log" echo Cert renewed and successfully signed once for this TFS job already&&exit 0
IF NOT EXIST .\renew_certificate.bat echo missing renew_certificate.bat&&exit 1
SETLOCAL EnableDelayedExpansion EnableExtensions
FOR /L %%T IN (1,1,5) DO (
call %~dp0renew_certificate.bat
IF NOT "!passed!"=="true" IF "!errorlevel!"=="0" Set passed=true&&exit /b 0
IF NOT "!passed!"=="true" echo Re-trying signing iteration %%T && call ping 127.0.0.1 -n 61 > nul
)
IF NOT "%passed%"=="true" echo Signing did not pass && exit /b 1
exit /b 0
Где 'passed' взялось? – aschipfl
Третья строка цикла for: 'IF NOT '! Прошло!" == "true" IF "! Errorlevel!" == "0" Set pass = true && exit/b 0' –
А, да! Но это не имеет смысла, поскольку вы оставляете скрипт сразу после установки переменной, поэтому отрицательное условие 'if NOT '! Прошло!" == "true" 'всегда выполняется и поэтому выполняется (если' pass' уже установлен на 'true' заранее) ... – aschipfl