Elemento Target (MSBuild)

Contiene un conjunto de tareas que MSBuild ejecutará secuencialmente.

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

Atributos y elementos

En las secciones siguientes se describen los atributos, los elementos secundarios y los elementos primarios.

Atributos

Atributo

Descripción

Name

Atributo necesario.

Nombre del destino.

DependsOnTargets

Atributo opcional.

Los destinos que se deben ejecutar antes de este destino se pueden ejecutar o puede tener lugar el análisis de dependencia de nivel superior. Los destinos múltiples están separados con puntos y coma.

Returns

Atributo opcional.

El conjunto de elementos que estará disponible para las tareas que invocan a este destino, por ejemplo, las tareas de MSBuild. Los destinos múltiples están separados con puntos y coma.

Inputs

Atributo opcional.

Entradas de elemento para este destino. Los elementos de este atributo se utilizan como entrada en el análisis de dependencia de nivel superior.

Outputs

Atributo opcional.

Resultados esperados de este destino. Se pueden aplicar transformaciones a los elementos de entrada para generar los elementos de salida. Para obtener más información sobre las transformaciones, vea Transformaciones de MSBuild.

BeforeTargets

Atributo opcional.

Una lista de nombres de destino separados por puntos y coma. Cuando se especifica, indica que este objetivo se debe ejecutar antes del destino o destinos especificados. Esto permite que al autor del proyecto extender un conjunto existente de objetivos sin modificarlos directamente.

AfterTargets

Atributo opcional.

Una lista de nombres de destino separados por punto y coma. Cuando se especifica, indica que este destino se debe ejecutar después del destino o destinos especificados. Esto permite que el autor del proyecto amplíe un conjunto de destinos existente de objetivos sin modificarlos directamente.

KeepDuplicateOutputs

Atributo booleano opcional.

Si es true, se registran varias referencias al mismo elemento en Resultados. De forma predeterminada, este atributo es false.

Condition

Atributo opcional.

La condición que se va a evaluar. Si la condición se evalúa como false, el destino no ejecutará el cuerpo del destino o cualquier destino establecido en el atributo DependsOnTargets. Para obtener más información sobre las condiciones, vea Condiciones de MSBuild.

Elementos secundarios

Elemento

Descripción

Tarea

Crea y ejecuta una instancia de una tarea de MSBuild. Puede haber cero o más tareas en un destino.

OnError

Hace que uno o varios destinos se ejecuten si el atributo ContinueOnError es false para una tarea que ha fallado. Puede haber cero o más elementos OnError en un destino. Si están presentes elementos OnError, deben ser los últimos elementos en el elemento Target.

Elementos primarios

Elemento

Descripción

Proyecto

Elemento raíz necesario de un archivo de proyecto de MSBuild.

Comentarios

El primer destino que se ejecutará se especifica en el tiempo de ejecución. Los destinos pueden tener dependencias en otros destinos. Por ejemplo, un destino para la implementación depende de un destino para la compilación. El motor de MSBuild ejecuta las dependencias en el orden en que aparecen en el atributo DependsOnTargets, de izquierda a derecha. Para obtener más información, vea Objetivos de MSBuild.

Un destino sólo se ejecuta una vez durante una compilación, incluso si dependen del mismo más de un destino.

Si se omite un destino porque su atributo Condition se evalúa como false, todavía se puede ejecutar si se invoca más adelante durante la compilación y su atributo Condition se evalúa como true en dicho momento.

Antes de MSBuild 4, Target devolvía todos los elementos especificados en el atributo Outputs . Para ello, MSBuild debía grabar estos elementos en caso de que las tareas los pidieran más adelante durante la compilación. Porque no había forma de indicar qué objetivos tenían salidas necesarias para los llamadores, MSBuild acumulaba todos los elementos de todas las Outputs en todas las Target invocadas. Esto llevó a escalar problemas para compilaciones que tenían un gran número de elementos de salida.

Si el usuario especifica Returns en cualquier elemento Target de un proyecto, solo los Targetque tengan un atributo Returns graban dichos elementos.

Target puede contener un atributo Outputs y un atributo Returns . Outputs se utiliza con Inputs para determinar si el destino está actualizado. Returns, si existe, reemplaza el valor de Outputs para determinar qué elementos se devuelven a los llamadores. Si Returns no está presente, Outputs estarán disponibles para los llamadores excepto en el caso descrito anteriormente.

Antes de MSBuild 4, siempre que un Target incluía varias referencias al mismo elemento en sus Outputs, esos elementos duplicados se registraban. En las compilaciones muy grandes que tenían un gran número de resultados y muchas interdependencias de proyecto, esto hacía que se desperdiciara una gran cantidad de memoria porque los elementos duplicados no servían. Cuando el atributo KeepDuplicateOutputs se establece en true, no se almacenan estos duplicados.

Ejemplo

El siguiente ejemplo de código muestra un elemento Target que ejecuta la tarea Csc.

<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én

Conceptos

Objetivos de MSBuild

Referencia de esquemas del archivo de proyecto MSBuild