Tareas de MSBuild

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 Escribir tareas.

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 listas 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 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 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.

Tareas reemplazadas

MSBuild busca tareas en diversas ubicaciones. La primera ubicación se encuentra en los archivos con la extensión .OverrideTasks almacenados en los directorios de .NET Framework. Las tareas de estos archivos reemplazarán a cualquier otra tarea que tenga el mismo nombre, incluso a las tareas del archivo de proyecto. La segunda ubicación se encuentra en los archivos con la extensión. Tasks de los directorios de .NET Framework. Si la tarea no se encuentra en ninguna de estas ubicaciones, se usará la tarea del archivo de proyecto.

Vea también

Conceptos

Escribir tareas

Tareas insertadas de MSBuild

Otros recursos

MSBuild Concepts

MSBuild Overview