Tareas de MSBuild

Actualización: noviembre 2007

Una plataforma de compilación necesita ser capaz de ejecutar cualquier cantidad de acciones durante el proceso de compilación. MSBuild utiliza tareas para realizar estas acciones. Las tareas son unidades de código ejecutable utilizadas por MSBuild para realizar operaciones de compilación indivisibles.

Lógica de las tareas

El formato de archivo del proyecto XML de MSBuild no es capaz de ejecutar plenamente las operaciones de compilación por sí solo, de modo que la lógica de las tareas se tiene que implementar fuera del archivo de proyecto.

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

La clase de la tarea también define los parámetros de entrada y salida disponibles para la tarea en el archivo de proyecto. Se puede tener acceso a todas las propiedades públicas configurables no estáticas y no abstractas expuestas por la clase de la tarea en el archivo de proyecto. Para ello, es preciso colocar el atributo correspondiente con el mismo nombre en el elemento Task.

Puede escribir su propia tarea creando una clase administrada que implemente la interfaz ITask. Para obtener más información, vea Cómo: Escribir una tarea.

Ejecutar una tarea desde un archivo de proyecto

Antes de ejecutar una tarea en el archivo de proyecto, es preciso asignar el tipo del ensamblado que implementa la tarea al nombre de la tarea, con el elemento UsingTask. De este modo, MSBuild sabrá dónde buscar la lógica de ejecución de la tarea cuando la encuentre en el archivo de proyecto.

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

Las colecciones de elementos y las propiedades de MSBuild se pueden utilizar como parámetros. Por ejemplo, el código siguiente llama a la tarea MakeDir y establece el valor de la propiedad Directories del objeto MakeDir en un valor igual al valor de la propiedad BuildDir declarada en el ejemplo anterior.

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

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

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

Tareas incluidas

MSBuild se distribuye con gran cantidad de tareas, como Copy, que copia archivos, MakeDir, que crea directorios, y Csc, que compila archivos de código fuente de Visual C#. Para obtener una lista completa de tareas disponibles e información de uso, vea Referencia de tareas de MSBuild.

Vea también

Tareas

Cómo: Escribir una tarea

Conceptos

Información general sobre MSBuild

Otros recursos

Conceptos de MSBuild