Cómo: Pasar errores por alto en las tareas
En ocasiones es preferible que una compilación tolere los errores producidos en determinadas tareas.Si los errores se producen en tareas no críticas, conviene que la compilación continúe porque es posible obtener el resultado esperado.Por ejemplo, si un proyecto utiliza una tarea SendMail para enviar un mensaje de correo electrónico tras la compilación de cada componente, tal vez se considere aceptable que la compilación continúe hasta finalizar aunque los servidores de correo no estén disponibles para enviar los mensajes de estado.O, por ejemplo, si los archivos intermedios se suelen eliminar durante la compilación, es posible que se considere aceptable finalizar la compilación incluso si dichos archivos no se pueden eliminar.
Utilizar el atributo ContinueOnError
El atributo ContinueOnError del elemento Task controla si una compilación debe detenerse o continuar tras producirse un error en la tarea.Este atributo también controla si los errores se tratarán como errores o advertencias si continúa la compilación.
El atributo ContinueOnError puede contener uno de los siguientes valores:
WarnAndContinue o true.Cuando una tarea, las tareas siguientes en el elemento Destino y compilación continúan ejecutándose, y todos los errores de la tarea se tratan como advertencias.
ErrorAndContinue.Cuando una tarea, las tareas siguientes en el elemento Target y compilación continúan ejecutándose, y todos los errores de la tarea se tratan como errores.
ErrorAndStop o false (valor predeterminado).Cuando una tarea, las tareas restantes del elemento Target y la compilación no se ejecutan, y el elemento completo Target y la compilación se considera un error.
Las versiones de .NET Framework antes de 4,5 admitidos los valores únicamente true y false .
El valor predeterminado de ContinueOnError es ErrorAndStop.Si establece el atributo en ErrorAndStop, cree el comportamiento explícito para cualquier persona que lea el archivo de proyecto.
Para omitir un error en una tarea
Utilice el atributo ContinueOnError de la tarea.Por ejemplo:
<Delete Files="@(Files)" ContinueOnError="WarnAndContinue"/>
Ejemplo
En el ejemplo de código siguiente se muestra cómo el destino Build está ejecutándose y la compilación se considera correcta aunque se produzca un error en la tarea Delete.
<Project DefaultTargets="FakeBuild"
xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Files Include="*.obj"/>
</ItemGroup>
<Target Name="Clean">
<Delete Files="@(Files)" ContinueOnError="WarnAndContinue"/>
</Target>
<Target Name="FakeBuild" DependsOnTargets="Clean">
<Message Text="Building after cleaning..."/>
</Target>
</Project>