Partager via


Configurations standard et personnalisée de l'ensemble d'outils

MSBuild 3.5 inclut deux ensembles d'outils prédéfinis. Les ensembles d'outils sont des jeux de tâches, de cibles et d'outils de ligne de commande que vous pouvez utiliser pour générer un projet. Vous pouvez également créer vos propres modèles de projet personnalisés.

Notes

Nous vous recommandons de lire Utilisation de MSBuild pour cibler des versions spécifiques du .NET Framework pour mieux comprendre les ensembles d'outils, les versions cibles du .Net Framework et les ToolsVersions avant de continuer.

Types d'ensemble d'outils

Lorsque vous définissez un ensemble d'outils personnalisé, la valeur du répertoire sur lequel pointe $(MSBuildToolsPath) est également définie. Par conséquent, vous pouvez utiliser $(MSBuildToolsPath) dans un fichier projet pour importer des tâches et des cibles, au lieu de coder péniblement ces valeurs dans le fichier projet. Cela vous permet de définir des ensembles d'outils dans le Registre ou dans un fichier de configuration, afin que vous puissiez effectuer la génération sur les bureaux de développeur ou dans les scénarios d'atelier de génération.

En utilisant des ensembles d'outils, vous pouvez diriger MSBuild afin de cibler des versions spécifiques de .NET Framework. Cela signifie que vous pouvez générer un projet qui fonctionne uniquement avec Visual Studio 2008, et que vous pouvez également générer des projets Visual Studio 2005 dans Visual Studio 2008.

Visual Studio 2008 inclut deux ensembles d'outils « standard ». Un ensemble d'outils, qui a également été inclus dans MSBuild 2.0 dans Visual Studio 2005, cible .NET Framework 2.0. L'autre ensemble d'outils, qui est compris dans MSBuild 3.5, peut cibler .NET Framework 2.0, .NET Framework 3.0 et .NET Framework 3.5.

Configurations d'ensemble d'outils standard

MSBuild 3.5 inclut les ensembles d'outils standard suivants :

ToolsVersion

MSBuildToolsPath ou MSBuildBinPath

2.0

< chemin d'installation de Windows >\Microsoft.Net\Framework\v2.0.50727\

3.5

< chemin d'installation de Windows >\Microsoft.Net\Framework\v3.5.20223\

Les ensembles d'outils standard sont disponibles à un emplacement quelconque sur l'ordinateur lorsque vous exécutez MSBuild.exe ou créez une instance du moteur MSBuild, à moins que les informations de l'ensemble d'outils ne soient remplacées dans le fichier MSBuild.exe.config ou un fichier de configuration spécifique à l'hôte.

La valeur ToolsVersion, qui est spécifiée en tant qu'attribut dans la balise Project du fichier projet, identifie l'ensemble d'outils qui est utilisé par un projet généré par Visual Studio. Vous pouvez considérer ToolsVersion comme le « nom » d'un ensemble d'outils. Si un ToolsVersion n'est pas spécifié dans le projet, un ToolsVersion par défaut est utilisé. Pour MSBuild 3.5, la valeur de ToolsVersion par défaut est définie à 2.,0. Cela signifie que les projets qui génèrent sans ToolsVersion explicite utiliseront l'ensemble d'outils 2.0 inclus avec Visual Studio 2005. Visual Studio 2010 génère automatiquement tous les projets avec une valeur ToolsVersion égale à 3.5. Étant donné qu'il utilise ce nouvel ensemble d'outils, il peut cibler les trois versions du .NET Framework.

Les informations relatives à l'ensemble d'outils standard sont définies dans les clés suivantes du Registre :

Ruche de Registre

Chaîne du nom de la clé

Valeur de la clé de chaîne

HKEY_LOCAL_MACHINE\ SOFTWARE\Microsoft\MSBuild\3.5\

DefaultToolsVersion

2.0

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\2.0\

ToolsPath

Chemin d'installation de .NET Framework 2.0

\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\3.5\

ToolsPath

Chemin d'installation de .NET Framework 3.5

DefaultToolsVersion spécifie l'ensemble d'outils à utiliser lorsque vous générez un projet qui ne spécifie pas d'ensemble d'outils. Par exemple, la valeur DefaultToolsVersion correspondant à MSBuild dans Visual Studio 2010 est 2.0. La valeur de DefaultToolsVersion peut être remplacée dans les fichiers de configuration spécifiques à l'hôte. Les autres valeurs définissent les chemins d'installation pour les versions .NET Framework.

Notes

Nous vous recommandons de ne pas changer ces paramètres. Néanmoins, vous pouvez ajouter vos propres paramètres et configurer des définitions d'ensemble d'outils personnalisées sur l'ordinateur, comme décrit dans la section suivante.

Définitions d'ensemble d'outils personnalisées

Lorsqu'un ensemble d'outils standard ne répond pas à vos spécifications de génération, vous pouvez créer un ensemble d'outils personnalisé. Par exemple, vous pouvez avoir un scénario de laboratoire de génération dans lequel vous devez disposer d'un système séparé pour la génération des projets Visual C++. En utilisant un ensemble d'outils personnalisé, vous pouvez assigner des valeurs personnalisées à l'attribut ToolsVersion lorsque vous créez des projets ou exécutez MSBuild.exe. Cela vous permet également d'utiliser la propriété $(MSBuildToolsPath) pour importer des fichiers .targets à partir de ce répertoire.

Spécifiez votre ensemble d'outils personnalisé dans le fichier de configuration pour MSBuild.exe (ou pour un hôte personnalisé de MSBuild si vous avez un outil séparé qui héberge le moteur MSBuild). Par exemple, le fichier de configuration pour MSBuild.exe pourrait inclure la définition d'ensemble d'outils suivante :

<msbuildToolsets default="3.0">
   <toolset toolsVersion="4.0">
      <property name="MSBuildToolsPath" 
        value="C:\Windows\Microsoft .NET\Framework\v3.0" />
   </toolset>
</msbuildToolsets>

<msbuildToolsets> est une section de configuration .NET personnalisée qui doit également être définie dans le fichier de configuration, comme suit :

<configSections>
   <section name="msbuildToolsets"       
       Type="Microsoft.Build.BuildEngine.ToolsetConfigurationSection, 
       Microsoft.Build.Engine, Version=3.5.0.0, Culture=neutral, 
       PublicKeyToken=b03f5f7f11d50a3a"
   </section>
</configSections>

Notes

Pour être lue correctement, la balise configSections doit être la première balise sous la balise de configuration.

ToolsetConfigurationSection est une section de configuration personnalisée qui peut être utilisée par tout hôte pour la configuration personnalisée. Si vous utilisez un ensemble d'outils personnalisé, un hôte ne doit rien faire pour initialiser le moteur de génération, excepté fournir les entrées de fichier de configuration. En définissant des entrées dans le Registre, vous pouvez spécifier des ensembles d'outils d'ordinateur qui s'appliquent à MSBuild.exe, Visual Studioet tous les hôtes de MSBuild.

Notes

Si un fichier de configuration définit des paramètres pour un ToolsVersion qui a déjà été défini dans le Registre, les deux définitions ne sont pas fusionnées. La définition du fichier de configuration a priorité et les paramètres dans le Registre pour ce ToolsVersion sont ignorés.

Les propriétés suivantes sont spécifiques à la valeur de ToolsVersion utilisé dans les projets :

  • $ (MSBuildBinPath) - MSBuildBinPath a la valeur ToolsPath qui est spécifiée dans le Registre ou le fichier de configuration dans lequel est défini ToolsVersion. Le paramètre $(MSBuildToolsPath) dans le Registre ou le fichier de configuration spécifie l'emplacement de l'ensemble d'outils. Dans le fichier projet, cela mappe à la propriété $(MSBuildBinPath) et également à la propriété $(MSBuildToolsPath).

  • $ (MSBuildToolsPath) - Cette propriété réservée est fournie par la propriété MSBuildToolsPath spécifiée dans le fichier de configuration. (Cette propriété se substitue à $(MSBuildBinPath). Toutefois, $(MSBuildBinPath) est retenu pour la compatibilité.)

Vous pouvez également ajouter des propriétés personnalisées spécifiques au ToolsVersion au fichier de configuration en utilisant la même syntaxe que celle utilisée pour ajouter la propriété MSBuildToolsPath. Ces propriétés personnalisées sont disponibles pour le fichier projet en utilisant le même nom que la valeur spécifiée dans le fichier de configuration.

Voir aussi

Concepts

Concepts avancés de MSBuild