2010-10-20 6 views
6

Ich habe benutzerdefinierte NAnt Aufgabe für Testzwecke und ich möchte NAnt Build-Prozess abbrechen, wenn die Aufgabe fehlgeschlagen ist. Ich habe benutzerdefinierte ErrorTask erstellt:FailOnError funktioniert nicht in benutzerdefinierten NAnt Aufgabe

[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!"); 
    } 
} 

Hier ist, was ich in NAnt Build-Datei haben:

<target name="errorTarget"> 
    <errorTask failonerror="true" /> 
    <errorTask failonerror="true" /> 
</target> 

Im Ergebnis (build.log) Ich habe:

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

So Ich kann sehen, dass auch die zweite Aufgabe ausgeführt wird, aber ich möchte sie abbrechen, weil der erste Aufruf "Error!" Zurückgibt. Könnten Sie mir helfen, es zu beheben?

Auch ich nehme an, dass es nicht notwendig ist, FailOnError Wert zu kodieren, es sollte genug sein, nur failonerror Attribut in Build-Skript zu verwenden, aber es funktioniert in keinem Fall für mich.

Vielen Dank.

Antwort

7

Sie müssen eine Ausnahmeblase aus Ihrer ExecuteTask-Funktion herauslassen. Fügen Sie nach Ihrer Protokollanweisung diese Zeile hinzu:

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

Dies ist, was ich brauche. Vielen Dank. – Antipod