FailOnError在自定义NAnt任务中不起作用

Ant*_*pod 6 nant nant-task

我有自定义的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!");
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我在NAnt构建文件中的内容:

<target name="errorTarget"> 
    <errorTask failonerror="true" />
    <errorTask failonerror="true" />
</target>
Run Code Online (Sandbox Code Playgroud)

在结果(build.log)中我有:

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

所以,我可以看到第二个任务也在运行,但是我想取消它,因为第一个调用返回"Error!".你能协助我修理吗?

另外,我假设,没有必要对FailOnError值进行硬编码,它应该足以在构建脚本中使用failonerror属性,但在任何情况下它都不适用于我.

谢谢.

Rus*_*ure 8

您需要让ExecuteTask函数中出现异常气泡.在您的日志语句之后,添加以下行:

throw new BuildException("Something terrible has happened!");
Run Code Online (Sandbox Code Playgroud)