Я столкнулся с проблемой с задачей в пакетных файлах в моих файлах проекта NAnt.При работе в Windows XP SP 3 (но не в Windows Vista или Windows Server 2008) и использовании NAnt 0.85 или 0.91alpha2 задача всегда будет успешной (возвращая код ошибки 0) независимо от того, что вернул выполненный скрипт.
В качестве примера я написал следующую цель NAnt:
<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>
, которая вызывает следующий пакетный файл:
exit /b 1
При нормальной работе (Windows Vista)результат запуска NAnt:
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)
Но на двух разных машинах с Windows XP SP3 результат запуска NAnt:
build:
[exec] C:\Documents and Settings\Will\My Documents\My Code>exit /b 1
[echo] Makeall task returned result 0
BUILD SUCCEEDED
Хотя я не исключаю, что этоэто ошибка, я нахожу гораздо более вероятным, что я забыл некоторые важные настройки конфигурации в Windows или NAnt, которые вызывают это поведение.кто-нибудь еще сталкивался с этим?Есть ли достаточно элегантный обходной путь?