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. MSBuildMSBuild utiliza tareas para realizar estas acciones. uses tasks to perform these actions. Una tarea es una unidad de código ejecutable que MSBuildMSBuild utiliza para realizar operaciones de compilación atómicas.A task is a unit of executable code used by MSBuildMSBuild to perform atomic build operations.

Lógica de las tareasTask Logic

El formato de archivo de proyecto XML MSBuildMSBuild 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 MSBuildMSBuild 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.All public settable non-static non-abstract properties exposed by the task class can be accessed in the project file by placing a corresponding attribute with the same name on the Task element.

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 obtener más información, consulte Escribir tareas.For more information, see Task Writing.

Ejecutar una tarea desde un archivo del proyectoExecuting 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 MSBuildMSBuild saber dónde buscar la lógica de ejecución de la tarea cuando la encuentre en el archivo del proyecto.This lets MSBuildMSBuild 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 MSBuildMSBuild, cree un elemento con el nombre de la tarea como elemento secundario de un elemento Target.To execute a task in an MSBuildMSBuild 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 MSBuildMSBuild se pueden utilizar como parámetros.MSBuildMSBuild 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 declarada en el ejemplo anterior.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 declared in the previous example.

<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

MSBuildMSBuild 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 Visual C#Visual C#. ships with many tasks such as Copy, which copies files, MakeDir, which creates directories, and Csc, which compiles Visual C#Visual 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

MSBuildMSBuild busca tareas en varias ubicaciones. 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

Conceptos de MSBuild MSBuild Concepts
MSBuild MSBuild
Escribir tareas Task Writing
Tareas insertadasInline Tasks