Je rencontre un problème avec la tâche <exec> sur les fichiers batch de mes fichiers de projet NAnt. Sous Windows XP SP 3 (mais pas Windows Vista ou Windows Server 2008) et utilisant NAnt 0.85 ou 0.91alpha2, la tâche <exec> réussira toujours (retournant un code d'erreur de 0) quel que soit le résultat du script exécuté.NAnt <exec> La tâche retourne toujours 0 pour les fichiers batch sous Windows XP
À titre d'exemple, j'ai écrit la cible NAnt suivante:
<target name="build">
<exec program="fail.bat"
failonerror="false" resultproperty="makeall.result">
</exec>
<echo message="Makeall task returned result ${makeall.result}"/>
<fail if="${int::parse(makeall.result) != 0}">Encountered ${makeall.result} errors.</fail>
</target>
qui appelle le fichier batch suivant:
exit /b 1
En fonctionnement normal (Windows Vista), le résultat de l'exécution NAnt est :
build:
[exec] C:\Users\Will\Code>exit /b 1
[exec] C:\Users\Will\Code\fail.build(6,4):
[exec] External Program Failed: C:\Users\Will\Code\fail.bat (return code was 1)
[echo] Makeall task returned result 1
BUILD FAILED - 1 non-fatal error(s), 0 warning(s)
Mais sur deux machines Windows XP SP3 différentes, le résultat de l'exécution de NAnt est :
build:
[exec] C:\Documents and Settings\Will\My Documents\My Code>exit /b 1
[echo] Makeall task returned result 0
BUILD SUCCEEDED
Bien que je ne suis pas actualisant la possibilité que ce soit un bug, je trouve qu'il est beaucoup plus probable que j'oublie une configuration cruciale sur la mise sous Windows ou NAnt qui est à l'origine de ce comportement. Est-ce que quelqu'un d'autre a rencontré cela? Y a-t-il une solution de contournement raisonnablement élégante?