我有用于测试目的的自定义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.
所以,我可以看到第二个任务也在运行,但是我想取消它,因为第一个调用返回“Error!”。你能帮我解决一下吗?
另外,我假设,没有必要对FailOnError值进行硬编码,它应该足以在构建脚本中使用failonerror属性,但在任何情况下它都不适用于我。
谢谢。
答案 0 :(得分:7)
您需要从ExecuteTask函数中释放异常气泡。在您的日志语句之后,添加以下行:
throw new BuildException("Something terrible has happened!");