Ho un file batch che utilizza il comando exit
per restituire un codice di uscita.Onorare i codici di uscita dai file batch richiamati da msbuild
Questo file batch può, in alcuni casi, essere richiamato in modo interattivo da una riga di comando, o in altri casi, può essere eseguito come parte di un progetto MSBuild, utilizzando l'attività Exec
.
- Se uso
exit %errorlevel%
nel mio file batch questo funziona bene e MSBuild vede il codice di errore, tuttavia un utente interattivo che esegue il file batch da una finestra di comando otterrà un maleducato uscita di cmd.exe questo caso. - Se utilizzo lo
exit /b %errorlevel%
lo scenario interattivo non ottiene un'uscita maleducata, ma ciò significa anche che ilcmd
avviato dall'attivitàExec
non si chiude e pertanto MSBuild non visualizza il valore restituito.
Come soluzione a entrambi i problemi, sto cercando di usare exit /b
ma lanciare il file batch dal mio script di build in questo modo:
<Exec Command="Batch.cmd params & exit %errorlevel%" />
L'idea è che prendo esplicitamente il 'non-terminale 'restituire da exit /b
e chiamare manualmente exit
per propagare questo valore al di fuori di cmd.exe
dove può essere visualizzato dall'attività di creazione Exec
.
Questa sembra la soluzione perfetta, tuttavia non funziona. Exec
non ottiene ancora il valore di errore corretto.