Elemento Target (MSBuild)
Contiene un conjunto de tareas para que MSBuild las ejecute de manera secuencial.
<Proyecto><Target>
Sintaxis
<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 elementos
En las siguientes secciones se describen los atributos, los elementos secundarios y los elementos primarios.
Atributos
Atributo | Descripción |
---|---|
Name |
Atributo necesario. Nombre del destino. Un nombre de destino puede contener cualquier carácter, salvo $@()%*?. . |
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 ni los destinos que se establecen en el atributo DependsOnTargets . Para obtener más información sobre las condiciones, consulte Condiciones. |
Inputs |
Atributo opcional. Los archivos que forman entradas en este destino. Si hay varios archivos, se separan con punto y coma. 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. Para obtener más información, vea Compilaciones incrementales, Cómo: Compilar de forma incremental y Transformaciones. |
Outputs |
Atributo opcional. Los archivos que forman salidas en este destino. Si hay varios archivos, se separan con punto y coma. 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. Para obtener más información, vea Compilaciones incrementales, Cómo: Compilar de forma incremental y Transformaciones. |
Returns |
Atributo opcional. El conjunto de elementos que estará disponible para las tareas que llaman a este destino, por ejemplo, las tareas de MSBuild. Si hay varios destinos, se separan con punto y coma. Si los destinos en el archivo no tienen atributos Returns , los atributos Outputs se utilizan en su lugar para este propósito. |
KeepDuplicateOutputs |
Atributo Boolean opcional. Si true , se registran varias referencias al mismo elemento en las devoluciones del destino. De manera predeterminada, este atributo es false . |
BeforeTargets |
Atributo opcional. Una lista separada por punto y coma de nombres de destino. Cuando se especifica, indica que este destino se debe ejecutar antes que los destinos especificados. Esto permite que el autor del proyecto amplíe un conjunto de destinos existentes sin tener que modificarlos directamente. Para más información, consulte Orden de compilación de destinos. |
AfterTargets |
Atributo opcional. Una lista separada por punto y coma de nombres de destino. Cuando se especifica, indica que este destino se debe ejecutar después de los destinos especificados. Esto permite que el autor del proyecto amplíe un conjunto de destinos existentes sin tener que modificarlos directamente. Para más información, consulte Orden de compilación de destinos. |
DependsOnTargets |
Atributo opcional. 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. Si hay varios destinos, se separan con punto y coma. |
Label |
Atributo opcional. Un identificador que puede identificar u ordenar elementos de usuario y del sistema. |
Elementos secundarios
Elemento | Descripción |
---|---|
Task | Crea y ejecuta una instancia de una tarea de MSBuild. Puede haber cero o más tareas en un destino. |
PropertyGroup | Contiene un conjunto de elementos Property definidos por el usuario. A partir de .NET Framework 3.5, un elemento Target puede contener elementos PropertyGroup . |
ItemGroup | Contiene un conjunto de elementos Item definidos por el usuario. A partir de .NET Framework 3.5, un elemento Target puede contener elementos ItemGroup . Para obtener más información, consulte Elementos. |
OnError | Hace que uno o varios destinos se ejecuten si el atributo ContinueOnError es ErrorAndStop (o false ) para una tarea con error. Puede haber cero o más elementos OnError en un destino. Si hay elementos OnError presentes, deben ser los últimos elementos en el elemento Target .Para información sobre el atributo ContinueOnError , consulte Elemento Task (MSBuild). |
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 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, consulte Destinos.
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.
Un destino solo se ejecuta una vez durante una compilación, incluso si más de un destino depende de él.
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.
Antes de MSBuild 4, Target
devolvía todos los elementos que se especificaban en el atributo Outputs
. Para ello, MSBuild debía registrar estos elementos en caso de que las tareas los solicitaran más adelante en la compilación. 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. Esto ocasionaba problemas de escalado para las compilaciones que tenían un gran número de elementos de salida.
Si el usuario especifica un Returns
en cualquier elemento Target
en un proyecto, solo los Target
que tienen un atributo Returns
registran esos elementos.
Un Target
puede contener los atributos Outputs
y Returns
. Outputs
se utiliza con Inputs
para determinar si el destino está actualizado. Returns
, si está presente, invalida el valor de Outputs
para determinar qué elementos se devuelven a los llamadores. Si Returns
no está presente, a continuación, Outputs
estará disponible para los llamadores, excepto en el caso descrito anteriormente.
Antes de MSBuild 4, cada vez que un Target
incluía varias referencias al mismo elemento en su Outputs
, esos elementos duplicados se registraban. 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. Cuando el atributo KeepDuplicateOutputs
se establece en true
, estos duplicados se registran.
Ejemplo
En el siguiente ejemplo de código se 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>