tareas de MSBuild

Una plataforma de compilación debe ser capaz de ejecutar cualquier número de acciones durante el proceso de compilación. MSBuild utiliza tareas para realizar estas acciones. Una tarea es una unidad de código ejecutable que MSBuild utiliza para realizar operaciones de compilación atómicas.

Lógica de las tareas

El formato de archivo de proyecto XML de MSBuild no puede ejecutar completamente operaciones de compilación por sí mismo, de modo que la lógica de la tarea debe implementarse fuera del archivo del proyecto.

La lógica de ejecución de una tarea se implementa como clase .NET que, a su vez, implementa la interfaz ITask, definida en el espacio de nombres Microsoft.Build.Framework.

La clase de tarea también define los parámetros de entrada y salida disponibles para la tarea en el archivo del proyecto. En el archivo del proyecto se puede acceder a todas las propiedades públicas configurables no estáticas y no abstractas expuestas por la clase de tarea si se coloca un atributo correspondiente con el mismo nombre en el elemento Task y se establece su valor como se muestra en los ejemplos más adelante en este artículo.

Puede escribir su propia tarea creando una clase administrada que implemente la interfaz ITask. Para más información, consulte Escribir tareas.

Ejecución de una tarea desde un archivo de proyecto

Antes de ejecutar una tarea en el archivo del proyecto, primero debe asignar el tipo en el ensamblado que implementa la tarea al nombre de tarea con el elemento UsingTask. Esto permite a MSBuild saber dónde buscar la lógica de ejecución de la tarea cuando la encuentre en el archivo del proyecto.

Para ejecutar una tarea en un archivo del proyecto de MSBuild, cree un elemento con el nombre de la tarea como elemento secundario de un elemento Target. Si una tarea acepta parámetros, estos se pasan como atributos del elemento.

Las listas y propiedades de elementos de MSBuild se pueden usar como parámetros. Por ejemplo, el siguiente código llama a la tarea MakeDir y establece el valor de la propiedad Directories del objeto MakeDir igual que el valor de la propiedad BuildDir:

<Target Name="MakeBuildDirectory">
    <MakeDir
        Directories="$(BuildDir)" />
</Target>

Las tareas también pueden devolver información al archivo del proyecto, que se puede almacenar en elementos o propiedades para su uso posterior. Por ejemplo, el siguiente código llama a la tarea Copy y almacena la información de la propiedad de salida CopiedFiles en la lista de elementos SuccessfullyCopiedFiles.

<Target Name="CopyFiles">
    <Copy
        SourceFiles="@(MySourceFiles)"
        DestinationFolder="@(MyDestFolder)">
        <Output
            TaskParameter="CopiedFiles"
            ItemName="SuccessfullyCopiedFiles"/>
     </Copy>
</Target>

Tareas incluidas

MSBuild se distribuye con muchas tareas como, por ejemplo, Copy (que copia archivos), MakeDir (que crea directorios) y Csc (que compila archivos de código fuente de C#). Para obtener una lista completa de tareas disponibles e información de uso, consulte Referencia de tareas.

Tareas invalidadas

MSBuild busca tareas en varias ubicaciones. La primera ubicación está en archivos con la extensión .OverrideTasks almacenados en el directorio de MSBuild. Las tareas en estos archivos invalidan cualquier otra tarea con los mismos nombres, incluidas las tareas en el archivo del proyecto. La segunda ubicación está en el archivo del proyecto y sus importaciones. Si la tarea no está definida en el proyecto, se buscará en las tareas predeterminadas de MSBuild definidas en un archivo .tasks del directorio de MSBuild.