2010-10-20 11 views
6

Tengo una tarea NAnt personalizada para propósitos de prueba y me gustaría cancelar el proceso de compilación NAnt si la tarea falla. He creado ErrorTask personalizado:FailOnError no funciona en la tarea NAnt personalizada

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

Aquí es lo que tengo en el fichero de construcción de NAnt:

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

En el resultado (build.log) Tengo:

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

Así , Puedo ver que también se ejecuta la segunda tarea, pero me gustaría cancelarla, porque la primera llamada devuelve "¡Error!". ¿Podrías ayudarme a arreglarlo?

Además, supongo que no es necesario codificar el valor de FailOnError, debería ser suficiente usar solo el atributo failonerror en el script de compilación, pero en cualquier caso no funciona para mí.

Gracias.

Respuesta

7

Debe dejar que una excepción salga de su función ExecuteTask. Después de su declaración de registro, agregue esta línea:

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

Esto es lo que necesito. Gracias. – Antipod

Cuestiones relacionadas