Élément Target (MSBuild)

Contient un ensemble de tâches que MSBuild doit exécuter séquentiellement.

<Project><Target>

Syntaxe

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

Attributs et éléments

Les sections suivantes décrivent des attributs, des éléments enfants et des éléments parents.

Attributs

Attribut Description
Name Attribut requis.

Nom de la cible. Un nom cible peut contenir n’importe quel caractère, sauf $@()%*?..
Condition Attribut facultatif.

Condition à évaluer. Si la condition a la valeur false, la cible n’exécute pas le corps de la cible ni les cibles définies dans l’attribut DependsOnTargets. Pour plus d’informations sur les conditions, consultez l’article Conditions (Conditions MSBuild).
Inputs Attribut facultatif.

Fichiers qui constituent les entrées dans cette cible. Plusieurs fichiers sont séparés par des points-virgules. Les horodateurs des fichiers doivent être comparés à ceux des fichiers dans Outputs pour déterminer si la Target est à jour. Pour plus d’informations, voir Générations incrémentielles, Guide pratique : Effectuer des générations incrémentielles et Transformations.
Outputs Attribut facultatif.

Fichiers qui constituent les sorties dans cette cible. Plusieurs fichiers sont séparés par des points-virgules. Les horodateurs des fichiers doivent être comparés à ceux des fichiers dans Inputs pour déterminer si la Target est à jour. Pour plus d’informations, voir Générations incrémentielles, Guide pratique : Effectuer des générations incrémentielles et Transformations.
Returns Attribut facultatif.

Ensemble des éléments qui seront disponibles pour les tâches qui appellent cette cible, par exemple, les tâches MSBuild. Plusieurs cibles sont séparées par des points-virgules. Si les cibles du fichier sont dépourvues d’attributs Returns, les attributs Output sont utilisés à la place à cet effet.
KeepDuplicateOutputs Attribut booléen facultatif.

Si true, plusieurs références au même élément dans l’attribut Returns de la cible sont enregistrées. Par défaut, cet attribut est défini sur false.
BeforeTargets Attribut facultatif.

Liste de noms de cibles séparés par des points-virgules. Si spécifié, indique que cette cible doit être exécutée avant la ou les cibles spécifiées. L’auteur du projet peut alors étendre un ensemble existant de cibles sans les modifier directement. Pour plus d’informations, consultez Ordre de génération des cibles.
AfterTargets Attribut facultatif.

Liste de noms de cibles séparés par des points-virgules. Si spécifié, indique que cette cible doit être exécutée après la ou les cibles spécifiées. L’auteur du projet peut alors étendre un ensemble existant de cibles sans les modifier directement. Pour plus d’informations, consultez Ordre de génération des cibles.
DependsOnTargets Attribut facultatif.

Les cibles qui doivent être exécutées avant cette cible peuvent l’être, ou l’analyse des dépendances de niveau supérieur peut être effectuée. Plusieurs cibles sont séparées par des points-virgules.
Label Attribut facultatif.

Identificateur permettant d’identifier ou de classer les éléments système et utilisateur.

Éléments enfants

Élément Description
Tâche Crée et exécute une instance d’une tâche MSBuild. Une cible peut ne contenir aucune tâche ou en contenir plusieurs.
PropertyGroup Contient un ensemble d’éléments Property définis par l’utilisateur. Depuis .NET Framework 3.5, un élément Target peut contenir des éléments PropertyGroup.
ItemGroup Contient un ensemble d’éléments Item définis par l’utilisateur. Depuis .NET Framework 3.5, un élément Target peut contenir des éléments ItemGroup. Pour plus d’informations, consultez l’article Éléments MSBuild.
OnError Provoque l’exécution d’une ou de plusieurs cibles si l’attribut ContinueOnError est défini sur ErrorAndStop (ou false) pour une tâche en échec. Une cible peut ne contenir aucun élément OnError ou en contenir plusieurs. Si des éléments OnError sont présents, il doit s’agir des derniers éléments de l’élément Target.

Pour plus d’informations sur l’attribut ContinueOnError, voir Élément Task (MSBuild).

Éléments parents

Élément Description
Projet Élément racine obligatoire d’un fichier projet MSBuild.

Remarques

La première cible à exécuter est spécifiée au moment de l’exécution. Les cibles peuvent avoir des relations de dépendance avec d’autres cibles. Par exemple, une cible de déploiement dépend d’une cible de compilation. Le moteur MSBuild exécute les dépendances dans l’ordre dans lequel ils apparaissent dans l’attribut DependsOnTargets, de gauche à droite. Pour plus d’informations, consultez l’article Targets (Cibles MSBuild).

MSBuild est dépend de l’ordre d’importation, et la dernière définition d’une cible avec un attribut Name spécifique est la définition utilisée.

Une cible est exécutée une seule fois pendant une génération, même si plusieurs cibles possèdent une relation de dépendance avec elle.

Si une cible est ignorée parce que son attribut Condition a la valeur false, elle peut toujours être exécutée si elle est appelée ultérieurement dans la génération et si son attribut Condition a la valeur true à ce moment-là.

Avant MSBuild 4, Target retournait tous les éléments qui étaient spécifiés dans l’attribut Outputs. Pour ce faire, MSBuild devait enregistrer ces éléments dans le cas où les tâches ultérieures de la génération les demandaient. Comme aucun moyen ne permettait d’indiquer quelles cibles possédaient des sorties nécessaires aux appelants, MSBuild cumulait tous les éléments de toutes les Outputs sur toutes les Targets appelées. Cela engendrait des problèmes de mise à l’échelle des générations qui comportaient un grand nombre d’éléments de sortie.

Si l’utilisateur spécifie un attribut Returns sur un élément Target d’un projet, alors seules les Targets qui possèdent un attribut Returns enregistrent ces éléments.

Une Target peut contenir à la fois un attribut Outputs et un attribut Returns. L’attribut Outputs est utilisé avec Inputs pour déterminer si la cible est à jour. Si l’attribut Returns est présent, il remplace la valeur de Outputs pour déterminer les éléments retournés aux appelants. Si l’attribut Returns n’est pas présent, alors l’attribut Outputs est disponible pour les appelants, sauf dans le cas décrit précédemment.

Avant MSBuild 4, chaque fois qu’une Target contenait plusieurs références au même élément dans son attribut Outputs, ces éléments en double étaient enregistrés. Dans les générations très volumineuses pourvues d’un grand nombre de sorties et de nombreuses interdépendances de projets, cela provoquait la perte d’une grande quantité de mémoire, car les éléments en double n’étaient d’aucune utilité. Si l’attribut KeepDuplicateOutputs est défini sur true, ces doublons sont enregistrés.

Exemple

L’exemple de code suivant présente un élément Target qui exécute la tâche 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>

Voir aussi