6

我有用于测试目的的自定义 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.log)我有:

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

所以,我可以看到第二个任务也在运行,但我想取消它,因为第一个调用返回“错误!”。你能帮我修一下吗?

另外,我假设没有必要对 FailOnError 值进行硬编码,在构建脚本中只使用 failonerror 属性就足够了,但无论如何它对我不起作用。

谢谢你。

4

1 回答 1

8

你需要让一个异常从你的 ExecuteTask 函数中冒出来。在您的日志语句之后,添加以下行:

throw new BuildException("Something terrible has happened!");
于 2010-10-20T19:06:12.597 回答