2010-10-20 30 views
6

Ho un task NAnt personalizzato a scopo di test e vorrei annullare il processo di generazione NAnt se l'attività è fallita. ho creato ErrorTask personalizzato:FailOnError non funziona nell'attività NAnt personalizzata

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

Ecco quello che ho in Nant build file:

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

Nel risultato (build.log) ho:

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

Così , Posso vedere che viene eseguito anche il secondo task, ma vorrei cancellarlo, perché la prima chiamata restituisce "Errore!". Potresti aiutarmi a risolverlo?

Inoltre, presumo, che non sia necessario codificare il valore FailOnError, dovrebbe essere sufficiente utilizzare solo l'attributo failonerror nello script di build, ma in ogni caso non funziona per me.

Grazie.

risposta

7

È necessario far uscire un'eccezione dalla funzione ExecuteTask. Dopo la dichiarazione di registro, aggiungi questa riga:

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

Questo è ciò di cui ho bisogno. Grazie. – Antipod