Partager via


Tâches MSBuild

Une plateforme de génération a besoin de la possibilité d’exécuter un nombre quelconque d’actions pendant le processus de génération. MSBuild utilise des tâches pour effectuer ces actions. Une tâche est une unité de code exécutable utilisée par MSBuild pour effectuer des opérations de génération atomiques.

Logique de tâche

Le format de fichier projet XML MSBuild ne peut pas exécuter entièrement les opérations de génération par lui-même. Par conséquent, la logique de tâche doit être implémentée en dehors du fichier projet.

La logique d’exécution d’une tâche est implémentée en tant que classe .NET qui implémente l’interface ITask , qui est définie dans l’espace Microsoft.Build.Framework de noms.

La classe de tâche définit également les paramètres d’entrée et de sortie disponibles pour la tâche dans le fichier projet. Toutes les propriétés non abstraites non statiques non statiques exposées par la classe de tâches peuvent recevoir des valeurs dans le fichier projet en plaçant un attribut correspondant portant le même nom sur l’élément Task et en définissant sa valeur comme indiqué dans les exemples plus loin dans cet article.

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 des tâches.

Exécuter une tâche à partir d’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 au nom de la tâche avec l’élément UsingTask . Cela permet à MSBuild de savoir où rechercher la logique d’exécution de votre tâche lorsqu’elle la trouve dans votre fichier projet.

Pour exécuter une tâche dans un fichier projet MSBuild, créez un élément portant le nom de la tâche en tant qu’enfant d’un Target élément. Si une tâche accepte des paramètres, celles-ci sont passées en tant qu’attributs de l’élément.

Les listes et propriétés d’éléments MSBuild peuvent être utilisées comme paramètres. Par exemple, le code suivant appelle la MakeDir tâche et définit la valeur de la Directories propriété de l’objet MakeDir égale à la valeur de la BuildDir propriété :

<Target Name="MakeBuildDirectory">
    <MakeDir
        Directories="$(BuildDir)" />
</Target>

Les tâches peuvent également retourner des informations au fichier projet, qui peuvent être stockées dans des éléments ou des propriétés pour une utilisation ultérieure. Par exemple, le code suivant appelle la Copy tâche et stocke les informations de la CopiedFiles propriété de sortie dans la SuccessfullyCopiedFiles liste d’éléments.

<Target Name="CopyFiles">
    <Copy
        SourceFiles="@(MySourceFiles)"
        DestinationFolder="@(MyDestFolder)">
        <Output
            TaskParameter="CopiedFiles"
            ItemName="SuccessfullyCopiedFiles"/>
     </Copy>
</Target>

Tâches incluses

MSBuild est fourni avec de nombreuses tâches telles que Copy, qui copie des fichiers, MakeDir, qui crée des répertoires et Csc, qui compile les fichiers de code source C#. Pour obtenir la liste complète des tâches disponibles et des informations d’utilisation, consultez référence de tâche.

Tâches substituées

MSBuild recherche des tâches à plusieurs emplacements. Le premier emplacement se trouve dans les fichiers avec l’extension .OverrideTasks stockée dans le répertoire MSBuild. Les tâches de ces fichiers remplacent toutes les autres tâches portant les mêmes noms, y compris les tâches dans le fichier projet. Le deuxième emplacement se trouve dans le fichier projet et ses importations. Si la tâche n’est pas définie dans le projet, elle est recherchée dans les tâches par défaut de MSBuild qui sont définies dans un .tasks fichier dans le répertoire MSBuild.