Tâches MSBuild
Mise à jour : novembre 2007
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 Comment : écrire une tâche.
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 collections de l'élément MSBuild et les propriétés peuvent être utilisées comme des 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 collection 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.