Elemento Target (MSBuild)Target element (MSBuild)

Contiene un conjunto de tareas para que MSBuild las ejecute de manera secuencial.Contains a set of tasks for MSBuild to execute sequentially.

<Project> <Target><Project> <Target>

SintaxisSyntax

<Target Name="Target Name"
        Inputs="Inputs"
        Outputs="Outputs"
        Returns="Returns"
        KeepDuplicateOutputs="true/false"
        BeforeTargets="Targets"
        AfterTargets="Targets"
        DependsOnTargets="DependentTarget"
        Condition="'String A' == 'String B'"
        Label="Label">
    <Task>... </Task>
    <PropertyGroup>... </PropertyGroup>
    <ItemGroup>... </ItemGroup>
    <OnError... />
</Target>

Atributos y elementosAttributes and elements

En las siguientes secciones se describen los atributos, los elementos secundarios y los elementos primarios.The following sections describe attributes, child elements, and parent elements.

AtributosAttributes

AtributoAttribute DescripciónDescription
Name Atributo necesario.Required attribute.

Nombre del destino.The name of the target. Un nombre de destino puede contener cualquier carácter, salvo $@()%*?..A target name may contain any character except $@()%*?..
Condition Atributo opcional.Optional attribute.

La condición que se va a evaluar.The condition to be evaluated. Si la condición se evalúa como false, el destino no ejecutará el cuerpo del destino ni los destinos que se establecen en el atributo DependsOnTargets.If the condition evaluates to false, the target will not execute the body of the target or any targets that are set in the DependsOnTargets attribute. Para obtener más información sobre las condiciones, consulte Condiciones.For more information about conditions, see Conditions.
Inputs Atributo opcional.Optional attribute.

Los archivos que forman entradas en este destino.The files that form inputs into this target. Si hay varios archivos, se separan con punto y coma.Multiple files are separated by semicolons. Las marcas de tiempo de los archivos se compararán con las marcas de tiempo de los archivos en Outputs para determinar si Target está actualizado.The timestamps of the files will be compared with the timestamps of files in Outputs to determine whether the Target is up to date. Para obtener más información, vea Compilaciones incrementales, Cómo: Compilar de forma incremental y Transformaciones.For more information, see Incremental builds, How to: Build incrementally, and Transforms.
Outputs Atributo opcional.Optional attribute.

Los archivos que forman salidas en este destino.The files that form outputs into this target. Si hay varios archivos, se separan con punto y coma.Multiple files are separated by semicolons. Las marcas de tiempo de los archivos se compararán con las marcas de tiempo de los archivos en Inputs para determinar si Target está actualizado.The timestamps of the files will be compared with the timestamps of files in Inputs to determine whether the Target is up to date. Para obtener más información, vea Compilaciones incrementales, Cómo: Compilar de forma incremental y Transformaciones.For more information, see Incremental builds, How to: Build incrementally, and Transforms.
Returns Atributo opcional.Optional attribute.

El conjunto de elementos que estará disponible para las tareas que llaman a este destino, por ejemplo, las tareas de MSBuild.The set of items that will be made available to tasks that invoke this target, for example, MSBuild tasks. Si hay varios destinos, se separan con punto y coma.Multiple targets are separated by semicolons. Si los destinos en el archivo no tienen atributos Returns, los atributos Outputs se utilizan en su lugar para este propósito.If the targets in the file have no Returns attributes, the Outputs attributes are used instead for this purpose.
KeepDuplicateOutputs Atributo Boolean opcional.Optional Boolean attribute.

Si true, se registran varias referencias al mismo elemento en las devoluciones del destino.If true, multiple references to the same item in the target's Returns are recorded. De manera predeterminada, este atributo es false.By default, this attribute is false.
BeforeTargets Atributo opcional.Optional attribute.

Una lista separada por punto y coma de nombres de destino.A semicolon-separated list of target names. Cuando se especifica, indica que este destino se debe ejecutar antes que los destinos especificados.When specified, indicates that this target should run before the specified target or targets. Esto permite que el autor del proyecto amplíe un conjunto de destinos existentes sin tener que modificarlos directamente.This lets the project author extend an existing set of targets without modifying them directly. Para más información, consulte Orden de compilación de destinos.For more information, see Target build order.
AfterTargets Atributo opcional.Optional attribute.

Una lista separada por punto y coma de nombres de destino.A semicolon-separated list of target names. Cuando se especifica, indica que este destino se debe ejecutar después de los destinos especificados.When specified, indicates that this target should run after the specified target or targets. Esto permite que el autor del proyecto amplíe un conjunto de destinos existentes sin tener que modificarlos directamente.This lets the project author extend an existing set of targets without modifying them directly. Para más información, consulte Orden de compilación de destinos.For more information, see Target build order.
DependsOnTargets Atributo opcional.Optional attribute.

Se pueden ejecutar los destinos que se deben ejecutar antes que este destino, o se puede realizar un análisis de dependencias de nivel superior.The targets that must be executed before this target can be executed or top-level dependency analysis can occur. Si hay varios destinos, se separan con punto y coma.Multiple targets are separated by semicolons.
Label Atributo opcional.Optional attribute.

Un identificador que puede identificar u ordenar elementos de usuario y del sistema.An identifier that can identify or order system and user elements.

Elementos secundariosChild elements

ElementoElement DescripciónDescription
TaskTask Crea y ejecuta una instancia de una tarea de MSBuild.Creates and executes an instance of an MSBuild task. Puede haber cero o más tareas en un destino.There may be zero or more tasks in a target.
PropertyGroupPropertyGroup Contiene un conjunto de elementos Property definidos por el usuario.Contains a set of user-defined Property elements. A partir de .NET Framework 3.5, un elemento Target puede contener elementos PropertyGroup.Starting in the .NET Framework 3.5, a Target element may contain PropertyGroup elements.
ItemGroupItemGroup Contiene un conjunto de elementos Item definidos por el usuario.Contains a set of user-defined Item elements. A partir de .NET Framework 3.5, un elemento Target puede contener elementos ItemGroup.Starting in the .NET Framework 3.5, a Target element may contain ItemGroup elements. Para obtener más información, consulte Elementos.For more information, see Items.
OnErrorOnError Hace que uno o varios destinos se ejecuten si el atributo ContinueOnError es ErrorAndStop (o false) para una tarea con error.Causes one or more targets to execute if the ContinueOnError attribute is ErrorAndStop (or false) for a failed task. Puede haber cero o más elementos OnError en un destino.There may be zero or more OnError elements in a target. Si hay elementos OnError presentes, deben ser los últimos elementos en el elemento Target.If OnError elements are present, they must be the last elements in the Target element.

Para información sobre el atributo ContinueOnError, consulte Elemento Task (MSBuild).For information about the ContinueOnError attribute, see Task element (MSBuild).

Elementos primariosParent elements

ElementoElement DescripciónDescription
ProyectoProject Elemento raíz necesario de un archivo de proyecto de MSBuild.Required root element of an MSBuild project file.

ComentariosRemarks

El primer destino que se ejecutará se especifica en tiempo de ejecución.The first target to execute is specified at run time. Los destinos pueden tener dependencias en otros destinos.Targets can have dependencies on other targets. Por ejemplo, un destino para la implementación depende de un destino para la compilación.For example, a target for deployment depends on a target for compilation. El motor de MSBuild ejecuta las dependencias en el orden en que aparecen en el atributo DependsOnTargets, de izquierda a derecha.The MSBuild engine executes dependencies in the order in which they appear in the DependsOnTargets attribute, from left to right. Para obtener más información, consulte Destinos.For more information, see Targets.

MSBuild depende del orden de importación y la última definición de un destino con un atributo Name específico es la definición usada.MSBuild is import-order dependent, and the last definition of a target with a specific Name attribute is the definition used.

Un destino solo se ejecuta una vez durante una compilación, incluso si más de un destino depende de él.A target is only executed once during a build, even if more than one target has a dependency on it.

Si se omite un destino porque el atributo Condition se evalúa como false, todavía se puede ejecutar si se invoca más adelante durante la compilación y el atributo Condition se evalúa como true en ese momento.If a target is skipped because its Condition attribute evaluates to false, it can still be executed if it is invoked later in the build and its Condition attribute evaluates to true at that time.

Antes de MSBuild 4, Target devolvía todos los elementos que se especificaban en el atributo Outputs.Before MSBuild 4, Target returned any items that were specified in the Outputs attribute. Para ello, MSBuild debía registrar estos elementos en caso de que las tareas los solicitaran más adelante en la compilación.To do this, MSBuild had to record these items in case tasks later in the build requested them. Debido a que no existía ninguna manera de indicar qué destinos tenían salidas que los llamadores pudieran requerir, MSBuild acumulaba todos los elementos de todos los Outputs en todos los Target invocados.Because there was no way to indicate which targets had outputs that callers would require, MSBuild accumulated all items from all Outputs on all invoked Targets. Esto ocasionaba problemas de escalado para las compilaciones que tenían un gran número de elementos de salida.This lead to scaling problems for builds that had a large number of output items.

Si el usuario especifica un Returns en cualquier elemento Target en un proyecto, solo los Target que tienen un atributo Returns registran esos elementos.If the user specifies a Returns on any Target element in a project, then only those Targets that have a Returns attribute record those items.

Un Target puede contener los atributos Outputs y Returns.A Target may contain both an Outputs attribute and a Returns attribute. Outputs se utiliza con Inputs para determinar si el destino está actualizado.Outputs is used with Inputs to determine whether the target is up-to-date. Returns, si está presente, invalida el valor de Outputs para determinar qué elementos se devuelven a los llamadores.Returns, if present, overrides the value of Outputs to determine which items are returned to callers. Si Returns no está presente, a continuación, Outputs estará disponible para los llamadores, excepto en el caso descrito anteriormente.If Returns is not present, then Outputs will be made available to callers except in the case described earlier.

Antes de MSBuild 4, cada vez que un Target incluía varias referencias al mismo elemento en su Outputs, esos elementos duplicados se registraban.Before MSBuild 4, any time that a Target included multiple references to the same item in its Outputs, those duplicate items would be recorded. En compilaciones muy grandes que tenían un gran número de salidas y muchas interdependencias del proyecto, esto hacía que se perdiera una gran cantidad de memoria porque los elementos duplicados no tenían ninguna utilidad.In very large builds that had a large number of outputs and many project interdependencies, this would cause a large amount of memory to be wasted because the duplicate items were not of any use. Cuando el atributo KeepDuplicateOutputs se establece en true, estos duplicados se registran.When the KeepDuplicateOutputs attribute is set to true, these duplicates are recorded.

EjemploExample

En el siguiente ejemplo de código se muestra un elemento Target que ejecuta la tarea Csc.The following code example shows a Target element that executes the Csc task.

<Target Name="Compile" DependsOnTargets="Resources" Returns="$(TargetPath)">
    <Csc Sources="@(CSFile)"
          TargetType="library"
          Resources="@(CompiledResources)"
          EmitDebugInformation="$(includeDebugInformation)"
          References="@(Reference)"
          DebugType="$(debuggingType)" >
        <Output TaskParameter="OutputAssembly"
                  ItemName="FinalAssemblyName" />
    </Csc>
</Target>

Vea tambiénSee also