Tâches MSBuild
Une plateforme de génération doit être en mesure d'exécuter un nombre d'actions indéfini pendant le processus de génération. MSBuild utilise des tâches pour exécuter ces actions. Une tâche est une unité de code exécutable utilisée par MSBuild pour exécuter des opérations de génération atomiques.
Logique de tâche
Le format de fichier projet XML MSBuild ne peut pas pleinement exécuter des opérations de génération en lui-même et la logique de tâche doit donc être implémentée en dehors du fichier projet.
La logique d'exécution d'une tâche est implémentée comme une classe .NET qui implémente l'interface ITask qui est définie dans l'espace de noms Microsoft.Build.Framework.
La classe de tâche définit également les paramètres d'entrée et de sortie disponibles à la tâche dans le fichier projet. Toutes les propriétés définissables publiques non statiques et non abstraites exposées par la classe de tâche sont accessibles dans le fichier projet en plaçant un attribut correspondant du même nom dans l'élément Task.
Vous pouvez écrire votre propre tâche en créant une classe managée qui implémente l'interface ITask. Pour plus d'informations, consultez Écriture de tâches.
Exécution d'une tâche depuis un fichier projet
Avant d'exécuter une tâche dans votre fichier projet, vous devez d'abord mapper le type dans l'assembly qui implémente la tâche et le nom de la tâche avec l'élément UsingTask. MSBuild sait ainsi où rechercher la logique d'exécution de votre tâche lorsqu'il la trouve dans votre fichier projet.
Pour exécuter une tâche dans un fichier projet MSBuild, créez un élément du nom de la tâche en tant qu'enfant d'un élément Target. Si une tâche accepte des paramètres, ceux-ci sont passés comme des attributs de l'élément.
Les propriétés et les listes d'éléments MSBuild peuvent être utilisées en tant que paramètres. Par exemple, le code suivant appelle la tâche MakeDir et définit la valeur de la propriété Directories de l'objet MakeDir comme égale à la valeur de la propriété BuildDir déclarée dans l'exemple précédent.
<Target Name="MakeBuildDirectory">
<MakeDir
Directories="$(BuildDir)" />
</Target>
Les tâches peuvent également retourner des informations au fichier projet, où elles pourront être stockées dans des éléments ou des propriétés en vue d'une utilisation ultérieure. Par exemple, le code suivant appelle la tâche Copy et stocke les informations de la propriété de sortie CopiedFiles dans la liste d'éléments SuccessfullyCopiedFiles.
<Target Name="CopyFiles">
<Copy
SourceFiles="@(MySourceFiles)"
DestinationFolder="@(MyDestFolder)">
<Output
TaskParameter="CopiedFiles"
ItemName="SuccessfullyCopiedFiles"/>
</Copy>
</Target>
Tâches incluses
MSBuild est fourni avec plusieurs tâches, telles que Copy, qui copie les fichiers, MakeDir, qui crée des répertoires et Csc, qui compile les fichiers de code source Visual C#. Pour obtenir la liste complète des tâches disponibles et des informations sur leur utilisation, consultez Référence des tâches MSBuild.
Tâches substituées
MSBuild recherche des tâches dans plusieurs emplacements. Le premier emplacement se trouve dans des fichiers ayant l'extension .OverrideTasks stockée dans les répertoires .NET Framework. Les tâches dans ces fichiers remplacent toutes les autres tâches portant les mêmes noms, y compris les tâches du fichier projet. Le deuxième emplacement se trouve dans des fichiers ayant l'extension .Tasks dans les répertoires .NET Framework. Si la tâche est introuvable dans l'un ou l'autre de ces emplacements, la tâche du fichier projet est utilisée.