2010-10-20 18 views
6

我有用于测试目的的自定义NAnt任务,如果任务失败,我想取消NAnt构建过程。 我已创建自定义ErrorTask:FailOnError在自定义NAnt任务中不起作用

[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. 

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

此外,我认为,没有必要硬编码FailOnError值,它应该足以在构建脚本中使用failonerror属性,但它在任何情况下都不适用于我。

谢谢。

回答

7

您需要让异常冒泡出ExecuteTask函数。在您的日志声明后,添加以下行:

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

这就是我需要的。谢谢。 – Antipod 2010-10-21 10:48:19