2010-10-20 10 views
6

Mam niestandardowe zadanie NAnt do celów testowych i chciałbym anulować proces budowania NAnt, jeśli zadanie nie powiodło się. Stworzyłem zwyczaj ErrorTask:FailOnError nie działa w niestandardowym zadaniu 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!"); 
    } 
} 

Oto co mam w Nant kompilacji:

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

W wyniku (build.log) Mam:

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

So , Widzę, że drugie zadanie jest uruchomione, ale chciałbym je anulować, ponieważ pierwsze wywołanie zwraca "Błąd!". Czy możesz mi pomóc to naprawić?

Zakładam również, że nie jest konieczne kodowanie wartości FailOnError, powinno wystarczyć użycie atrybutu failonerror w skrypcie budowania, ale w żadnym wypadku nie działa.

Dziękuję.

Odpowiedz

7

Należy zwolnić bąbelek wyjątku z funkcji ExecuteTask. Po wyciągu z dziennika dodaj tę linię:

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

Tego właśnie potrzebuję. Dziękuję Ci. – Antipod

Powiązane problemy