FailOnError не работает в пользовательской задаче NAnt

у меня есть пользовательская задача NAnt для целей тестирования, и я хотел бы отменить процесс сборки NAnt, если задача не удалась. Я создал пользовательскую ErrorTask:

[NAnt.Core.Attributes.TaskName("errorTask")]
public class ErrorTask : NAnt.Core.Task
{
    public ErrorTask()
    {
        FailOnError = true;
    }

    protected override void ExecuteTask()
    {
        Log(NAnt.Core.Level.Error, "Error!");
    }
}

вот что у меня есть в файле сборки NAnt:

<target name="errorTarget"> 
    <errorTask failonerror="true" />
    <errorTask failonerror="true" />
</target>

в результате (build.журнала) у меня есть:

errorTarget:
[errorTask] Error!
[errorTask] Error!
BUILD SUCCEEDED - 2 non-fatal error(s), 0 warning(s)
Total time: 0 seconds.

Итак, я вижу, что вторая задача также запущена, но я хотел бы ее отменить, потому что первый вызов возвращает "ошибка!". Не могли бы вы помочь мне исправить это?

кроме того, я предполагаю, что это не обязательно жестко кодировать значение FailOnError, достаточно использовать только атрибут failonerror в скрипте сборки, но он не работает для меня в любом случае.

спасибо.

1 ответов


вам нужно выпустить пузырь исключения из функции ExecuteTask. После инструкции log добавьте следующую строку:

throw new BuildException("Something terrible has happened!");