2010-10-20 35 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