tareas de MSBuildMSBuild tasks

Una plataforma de compilación debe ser capaz de ejecutar cualquier número de acciones durante el proceso de compilación.A build platform needs the ability to execute any number of actions during the build process. MSBuild utiliza tareas para realizar estas acciones.MSBuild uses tasks to perform these actions. Una tarea es una unidad de código ejecutable que MSBuild utiliza para realizar operaciones de compilación atómicas.A task is a unit of executable code used by MSBuild to perform atomic build operations.

Lógica de las tareasTask logic

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.The MSBuild XML project file format cannot fully execute build operations on its own, so task logic must be implemented outside of the project file.

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.The execution logic of a task is implemented as a .NET class that implements the ITask interface, which is defined in the Microsoft.Build.Framework namespace.

La clase de tarea también define los parámetros de entrada y salida disponibles para la tarea en el archivo del proyecto.The task class also defines the input and output parameters available to the task in the project file. 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.All public settable non-static non-abstract properties exposed by the task class can be given values in the project file by placing a corresponding attribute with the same name on the Task element, and setting its value as shown in the examples later in this article.

Puede escribir su propia tarea creando una clase administrada que implemente la interfaz ITask.You can write your own task by authoring a managed class that implements the ITask interface. Para más información, consulte Escribir tareas.For more information, see Task writing.

Ejecución de una tarea desde un archivo de proyectoExecute a task from a project file

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.Before executing a task in your project file, you must first map the type in the assembly that implements the task to the task name with the UsingTask element. 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.This lets MSBuild know where to look for the execution logic of your task when it finds it in your project file.

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.To execute a task in an MSBuild project file, create an element with the name of the task as a child of a Target element. Si una tarea acepta parámetros, estos se pasan como atributos del elemento.If a task accepts parameters, these are passed as attributes of the element.

Las listas y propiedades de elementos de MSBuild se pueden usar como parámetros.MSBuild item lists and properties can be used as parameters. 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:For example, the following code calls the MakeDir task and sets the value of the Directories property of the MakeDir object equal to the value of the BuildDir property:

<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.Tasks can also return information to the project file, which can be stored in items or properties for later use. 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.For example, the following code calls the Copy task and stores the information from the CopiedFiles output property in the SuccessfullyCopiedFiles item list.

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

Tareas incluidasIncluded tasks

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#).MSBuild ships with many tasks such as Copy, which copies files, MakeDir, which creates directories, and Csc, which compiles C# source code files. Para obtener una lista completa de tareas disponibles e información de uso, consulte Referencia de tareas.For a complete list of available tasks and usage information, see Task reference.

Tareas invalidadasOverridden tasks

MSBuild busca tareas en varias ubicaciones.MSBuild looks for tasks in several locations. La primera ubicación es en archivos con la extensión .OverrideTasks almacenados en los directorios de .NET Framework.The first location is in files with the extension .OverrideTasks stored in the .NET Framework directories. Las tareas en estos archivos invalidan cualquier otra tarea con los mismos nombres, incluidas las tareas en el archivo del proyecto.Tasks in these files override any other tasks with the same names, including tasks in the project file. La segunda ubicación es en archivos con la extensión .Tasks en los directorios de .NET Framework.The second location is in files with the extension .Tasks in the .NET Framework directories. Si la tarea no se encuentra en ninguna de estas ubicaciones, se utiliza la tarea en el archivo del proyecto.If the task is not found in either of these locations, the task in the project file is used.

Vea tambiénSee also