Elemento Target (MSBuild)
Contiene un conjunto de tareas que MSBuild ejecutará secuencialmente.
<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 próximas secciones se describen los atributos, los elementos secundarios y los elementos primarios.
Atributos
Atributo |
Descripción |
---|---|
Name |
Atributo necesario. Nombre del destino. |
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. |
Inputs |
Atributo opcional. Los archivos esos entradas de formulario en este destino.Varios archivos están separados por puntos y coma.Las marcas de tiempo de los archivos se compararán con las de archivos en Outputs para determinar si Target está actualizado.Para obtener más información, vea Compilaciones incrementales, Cómo: Compilar versiones incrementalmente y Transformaciones de MSBuild. |
Outputs |
Atributo opcional. Los archivos que forman los resultados en este destino.Varios archivos están separados por puntos y coma.Las marcas de tiempo de los archivos se compararán con las de archivos en Inputs para determinar si Target está actualizado.Para obtener más información, vea Compilaciones incrementales, Cómo: Compilar versiones incrementalmente y Transformaciones de MSBuild. |
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.Si los destinos del archivo no tienen ningún atributo de Returns, los atributos de los resultados se utilizan en su lugar con este fin. |
KeepDuplicateOutputs |
Atributo booleano opcional. Si se registra true, las referencias al mismo elemento del destino cambia.De forma predeterminada, este atributo es false. |
BeforeTargets |
Atributo opcional. Una lista de nombres de destino separados por punto y coma. Cuando se especifica, indica que este destino debe ejecutarse antes de destino o de los especificados.Esto permite al autor del proyecto ampliar un conjunto de destinos sin modificaciones de ellos directamente.Para obtener más información, vea Orden de compilación de destinos. |
AfterTargets |
Atributo opcional. Una lista de nombres de destino separados por punto y coma.Cuando se especifica, indica que este destino debe ejecutarse después de destino o de los especificados.Esto permite al autor del proyecto ampliar un conjunto de destinos sin modificaciones de ellos directamente.Para obtener más información, vea Orden de compilación de destinos. |
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. |
Label |
Atributo opcional. Un identificador que puede identificar o ordenar los elementos del sistema y de usuarios. |
Elementos secundarios
Elemento |
Descripción |
---|---|
Crea y ejecuta una instancia de una tarea de MSBuild.Puede haber cero o más tareas en un destino. |
|
Contiene un conjunto de elementos definidos por el usuario de Property.A partir de.NET Framework 3.5, un elemento de Target puede contener elementos de PropertyGroup. |
|
Contiene un conjunto de elementos definidos por el usuario de Item.A partir de.NET Framework 3.5, un elemento de Target puede contener elementos de ItemGroup.Para obtener más información, vea Elementos de MSBuild. |
|
Realice uno o más destinos para ejecutarse si el atributo de ContinueOnError es ErrorAndStop (o false) para una tarea errónea.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. Para obtener información sobre el atributo de ContinueOnError, vea Elemento Task (MSBuild). |
Elementos primarios
Elemento |
Descripción |
---|---|
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 de KeepDuplicateOutputs se establece en true, se registran 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>