Target, élément (MSBuild)
Contient un ensemble de tâches que MSBuild doit exécuter de façon séquentielle.
<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>
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. |
DependsOnTargets |
Attribut facultatif. Cibles à exécuter avant que cette cible puisse s'exécuter ou que l'analyse des dépendances de niveau supérieur soit effectuée. Les différentes cibles sont séparées par des points-virgules. |
Returns |
Attribut facultatif. L'ensemble des éléments qui seront disponibles pour les tâches invoquant cette cible, par exemple, les tâches MSBuild. Les différentes cibles sont séparées par des points-virgules. |
Inputs |
Attribut facultatif. Entrées de l'élément pour cette cible. Les éléments contenus dans cet attribut sont utilisés comme entrées dans l'analyse des dépendances de niveau supérieur. |
Outputs |
Attribut facultatif. Sorties attendues de cette cible. Vous pouvez appliquer des transformations aux éléments d'entrée pour générer les éléments de sortie. Pour plus d'informations sur les transformations, consultez Transformations MSBuild. |
BeforeTargets |
Attribut facultatif. Liste séparée par points-virgules de noms cibles. En cas de spécification, indique que cette cible doit s'exécuter avant la ou les cibles spécifiées. Cela permet à l'auteur du projet d'étendre un ensemble existant de cibles sans les modifier directement. |
AfterTargets |
Attribut facultatif. Liste séparée par points-virgules de noms cibles. En cas de spécification, indique que cette cible doit s'exécuter après la cible ou les cibles spécifiées. Cela permet à l'auteur du projet d'étendre un ensemble existant de cibles sans les modifier directement. |
KeepDuplicateOutputs |
Attribut boléen facultatif. Si la valeur est true, des références multiples pour le même élément dans les sorties sont enregistrées. Par défaut, cet attribut a la valeur false. |
Condition |
Attribut facultatif. Condition à évaluer. Si la condition a la valeur false, la cible n'exécutera pas le corps de la cible ou toute cible définie dans l'attribut DependsOnTargets. Pour plus d'informations sur les conditions, consultez Conditions MSBuild. |
Éléments enfants
Élément |
Description |
---|---|
Crée et exécute une instance d'une tâche MSBuild. Une cible peut ne contenir aucune tâche ou en contenir plusieurs. |
|
Entraîne l'exécution d'une ou plusieurs cibles si l'attribut ContinueOnError est false pour une tâche ayant échoué. Une cible peut ne contenir aucun élément OnError ou en contenir plusieurs. Ces éléments OnError, s'ils existent, doivent être les derniers éléments dans l'élément Target. |
Éléments parents
Élément |
Description |
---|---|
Élément racine requis d'un fichier projet MSBuild. |
Notes
La première cible à exécuter est spécifiée au moment de l'exécution. Les cibles peuvent avoir des dépendances avec d'autres cibles. Par exemple, une cible de déploiement peut dépendre d'une cible de compilation. Le moteur MSBuild exécute des dépendances dans l'ordre dans lequel elles s'affichent dans l'attribut DependsOnTargets de gauche à droite. Pour plus d'informations, consultez Cibles de MSBuild.
Une cible est exécutée une seule fois pendant une génération, même si plusieurs cibles dépendent d'elle.
Si une cible est ignorée parce que son attribut Condition a la valeur false, il est possible qu'elle soit néanmoins exécutée si elle est appelée ultérieurement dans la génération et que son attribut Condition a la valeur true à ce moment-là.
Avant MSBuild 4, Target retournait tous les éléments spécifiés dans l'attribut Outputs. Pour ce faire, MSBuild devait enregistrer ces éléments dans des tâches de cas ultérieurement dans la génération. Dans la mesure où il n'y avait aucun moyen d'indiquer quels objectifs avaient des sorties dont les appelants pouvaient avoir besoin, MSBuild accumulait tous les éléments de toutes les Outputs sur toutes les Targets invoquées. Cela a provoqué des problèmes de mise à l'échelle pour les builds qui avaient un grand nombre d'éléments de sortie.
Si l'utilisateur spécifie un Returns sur n'importe quel élément Target dans un projet, seules les Targets ayant un attribut Returns enregistrent ces éléments.
Target peut contenir à la fois un attribut Outputs et un attribut Returns. Outputs est utilisé avec Inputs pour déterminer si la cible est à jour. Le cas échéant, Returns remplace la valeur de Outputs pour déterminer les éléments retournés aux appelants. Si Returns n'est pas présent, alors Outputs seront mises à disposition des appelants, sauf dans le cas décrit précédemment.
Avant MSBuild 4, lorsqu'une Target incluait des références multiples au même élément dans ses Outputs, ces éléments en double étaient enregistrés. Dans les builds volumineuses avec un grand nombre de sorties et de nombreuses interdépendances de projet, cela entraînait le gaspillage d'une grande quantité de mémoire, car les éléments en double étaient totalement inutiles. Lorsque l'attribut KeepDuplicateOutputs a la valeur true, ces doublons ne sont pas stockés.
Exemple
L'exemple de code suivant illustre 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>