Configurations standard et personnalisée de l'ensemble d'outilsStandard and Custom Toolset Configurations

Un ensemble d’outils MSBuild contient des références à des tâches, des cibles et des outils que vous pouvez utiliser pour générer un projet d’application.An MSBuild Toolset contains references to tasks, targets, and tools that you can use to build an application project. MSBuild inclut un ensemble d’outils standard, mais vous pouvez également créer des ensembles d’outils personnalisés.MSBuild includes a standard Toolset, but you can also create custom Toolsets. Pour plus d’informations sur la façon de spécifier un ensemble d’outils, consultez Ensemble d’outils (ToolsVersion)For information about how to specify a Toolset, see Toolset (ToolsVersion)

Configurations standard d’ensembles d’outilsStandard Toolset Configurations

MSBuild 15.0 inclut les ensembles d’outils standard suivants :MSBuild 15.0 includes the following standard Toolsets:

ToolsVersionToolsVersion Chemin de l’ensemble d’outils (tel que spécifié dans la propriété de build MSBuildToolsPath ou MSBuildBinPath)Toolset Path (as specified in the MSBuildToolsPath or MSBuildBinPath build property)
2.02.0 Chemin d’installation de Windows\Microsoft.Net\Framework\v2.0.50727\Windows installation path\Microsoft.Net\Framework\v2.0.50727\
3.53.5 Chemin d’installation de Windows\Microsoft.NET\Framework\v3.5\Windows installation path\Microsoft.NET\Framework\v3.5\
4.04.0 Chemin d’installation de Windows\Microsoft.NET\Framework\v4.0.30319\Windows installation path\Microsoft.NET\Framework\v4.0.30319\
15.015.0 Dossier d’installation de Visual Studio\MSBuild\15.0\binVisual Studio installation path\MSBuild\15.0\bin

La valeur de ToolsVersion détermine l’ensemble d’outils utilisé par un projet généré par Visual Studio.The ToolsVersion value determines which Toolset is used by a project that Visual Studio generates. Dans Visual Studio 2017, la valeur par défaut est « 15.0 » (quelle que soit la version spécifiée dans le fichier projet), mais vous pouvez remplacer cet attribut avec le commutateur /toolsversion à une invite de commandes.In Visual Studio 2017, the default value is "15.0" (no matter what the version specified in the project file), but you can override that attribute by using the /toolsversion switch at a command prompt. Pour plus d’informations sur cet attribut et sur d’autres façons de spécifier ToolsVersion, consultez Substitution des paramètres ToolsVersion.For information about this attribute and other ways to specify the ToolsVersion, see Overriding ToolsVersion Settings.

Visual Studio 2017 n’utilise pas une clé de Registre pour le chemin à MSBuild.Visual Studio 2017 does not use a registry key for the path to MSBuild. Pour les versions de MSBuild antérieures à 15.0 qui sont installées avec Visual Studio 2017, les clés de Registre suivantes spécifient le chemin d’installation de MSBuild.exe.For versions of MSBuild prior to 15.0 that are installed with Visual Studio 2017, the following registry keys specify the installation path of MSBuild.exe.

Clé de RegistreRegistry Key Nom de cléKey Name Valeur de clé de type chaîneString Key Value
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\2.0|MSBuildToolsPath\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\2.0|MSBuildToolsPath Chemin d’installation du .NET Framework 2.0.NET Framework 2.0 Install Path
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ MSBuild\ToolsVersions\3.5|MSBuildToolsPath\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ MSBuild\ToolsVersions\3.5|MSBuildToolsPath Chemin d’installation du .NET Framework 3.5.NET Framework 3.5 Install Path
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ MSBuild\ToolsVersions\4.0|MSBuildToolsPath\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ MSBuild\ToolsVersions\4.0|MSBuildToolsPath Chemin d’installation du .NET Framework 4.NET Framework 4 Install Path

Sous-ensembles d'outilsSub-toolsets

Si la clé de Registre du tableau précédent a une sous-clé, MSBuild l’utilise pour déterminer le chemin d’un sous-ensemble d’outils qui remplace le chemin dans l’ensemble d’outils parent.If the registry key in the previous table has a subkey, MSBuild uses it to determine the path of a sub-toolset that overrides the path in the parent toolset. Voici un exemple de sous-clé :The following subkey is an example:

\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\12.0\12.0\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\12.0\12.0

Si des propriétés sont définies à la fois dans l’ensemble d’outils de base et dans le sous-ensemble d’outils sélectionné, les définitions de propriétés dans le sous-ensemble d’outils sont utilisées.If any properties are defined in both the base toolset and the selected sub-toolset, the property definitions in the sub-toolset are used. Par exemple, l’ensemble d’outils MSBuild 4.0 définit SDK40ToolsPath comme pointant vers le SDK 7.0A, mais l’ensemble d’outils MSBuild 4.0\11.0 définit la même propriété comme pointant vers le SDK 8.0A.For example, the MSBuild 4.0 toolset defines SDK40ToolsPath to point to the 7.0A SDK, but the MSBuild 4.0\11.0 toolset defines the same property to point to the 8.0A SDK. Si VisualStudioVersion n’est pas défini, SDK40ToolsPath pointe vers 7.0A, mais si VisualStudioVersion est défini comme pointant vers 11.0, la propriété pointe alors vers 8.0A.If VisualStudioVersion is unset, SDK40ToolsPath would point to 7.0A, but if VisualStudioVersion is set to 11.0, the property would instead point to 8.0A.

La propriété de build VisualStudioVersion indique si un sous-ensemble d’outils devient actif.The VisualStudioVersion build property indicates whether a sub-toolset becomes active. Par exemple, la valeur « 12.0 » pour VisualStudioVersion spécifie le sous-ensemble d’outils MSBuild 12.0.For example, a VisualStudioVersion value of "12.0" specifies the MSBuild 12.0 sub-toolset. Pour plus d’informations, consultez la section Sous-ensembles d’outils de Ensemble d’outils MSBuild (ToolsVersion).For more information, see the Sub-toolsets section of Toolset (ToolsVersion).

Note

Nous vous recommandons de ne pas modifier ces paramètres.We recommend that you avoid changing these settings. Vous pouvez néanmoins ajouter vos propres paramètres et spécifier des définitions d’ensembles d’outils personnalisés à l’échelle de l’ordinateur, comme décrit dans la section suivante.Nevertheless, you can add your own settings and define computer-wide custom toolset definitions, as the next section describes.

Définitions d’ensembles d’outils personnalisésCustom Toolset Definitions

Quand un ensemble d’outils standard ne répond pas à vos spécifications pour la génération, vous pouvez créer un ensemble d’outils personnalisé.When a standard Toolset does not fulfill your build requirements, you can create a custom Toolset. Par exemple, vous pouvez avoir un scénario de laboratoire de génération dans lequel vous devez disposer d’un système distinct pour la génération de projets Visual C++Visual C++.For example, you may have a build lab scenario in which you must have a separate system for building Visual C++Visual C++ projects. Avec un ensemble d’outils personnalisé, vous pouvez affecter des valeurs personnalisées à l’attribut ToolsVersion quand vous créez des projets ou que vous exécutez MSBuild.exe.By using a custom Toolset, you can assign custom values to the ToolsVersion attribute when you create projects or run MSBuild.exe. Ce faisant, vous pouvez également utiliser la propriété $(MSBuildToolsPath) pour importer des fichiers .targets à partir de ce répertoire, ainsi que définir vos propres propriétés de l’ensemble d’outils personnalisé qui peuvent être utilisées pour un projet utilisant cet ensemble d’outils.By doing this, you can also use the $(MSBuildToolsPath) property to import .targets files from that directory, as well as defining your own custom toolset properties that can be used for any project that uses that toolset.

Spécifiez un ensemble d’outils personnalisé dans le fichier de configuration pour MSBuild.exe (ou pour l’outil personnalisé qui héberge le moteur MSBuild si c’est ce que vous utilisez).Specify a custom Toolset in the configuration file for MSBuild.exe (or for the custom tool that hosts the MSBuild engine if that is what you are using). Par exemple, le fichier de configuration pour MSBuild.exe peut inclure la définition d’ensemble d’outils suivante si vous voulez remplacer le comportement par défaut de ToolsVersion 15.0.For example, the configuration file for MSBuild.exe could include the following Toolset definition if you wished to override the default behavior of ToolsVersion 15.0.

<msbuildToolsets default="15.0">  
   <toolset toolsVersion="15.0">  
      <property name="MSBuildToolsPath"   
        value="C:\SpecialPath" />  
   </toolset>  
</msbuildToolsets>  

<msbuildToolsets> doit également être défini comme suit dans le fichier de configuration.<msbuildToolsets> must also be defined in the configuration file, as follows.

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

Note

Pour que la lecture se fasse correctement, <configSections> doit être la première sous-section de la section <configuration>.To be read correctly, <configSections> must be the first subsection in the <configuration> section.

ToolsetConfigurationSection est une section de configuration personnalisée qui peut être utilisée par n’importe quel hôte MSBuild pour une configuration personnalisée.ToolsetConfigurationSection is a custom configuration section that can be used by any MSBuild host for custom configuration. Si vous utilisez un ensemble d’outils personnalisé, un hôte n’a rien à faire pour initialiser le moteur de génération, sauf fournir les entrées du fichier de configuration.If you use a custom Toolset, a host does not have to do anything to initialize the build engine except provide the configuration file entries. En définissant des entrées dans le Registre, vous pouvez spécifier des ensembles d’outils à l’échelle de l’ordinateur, qui s’appliquent à MSBuild.exe, à Visual StudioVisual Studio et à tous les hôtes de MSBuild.By defining entries in the registry, you can specify computer-wide Toolsets that apply to MSBuild.exe, Visual StudioVisual Studio, and all hosts of MSBuild.

Note

Si un fichier de configuration définit des paramètres pour une ToolsVersion qui a déjà été définie dans le Registre, les deux définitions ne sont pas fusionnées.If a configuration file defines settings for a ToolsVersion that was already defined in the registry, the two definitions are not merged. La définition du fichier de configuration a priorité et les paramètres du Registre pour cette ToolsVersion sont ignorés.The definition in the configuration file takes precedence and the settings in the registry for that ToolsVersion are ignored.

Les propriétés suivantes sont spécifiques à la valeur de ToolsVersion qui est utilisée dans les projets :The following properties are specific to the value of ToolsVersion that is used in projects:

  • $(MSBuildBinPath) est défini sur la valeur de ToolsPath qui est spécifiée dans le Registre ou dans le fichier de configuration où ToolsVersion est définie.$(MSBuildBinPath) is set to the ToolsPath value that is specified either in the registry or in the configuration file where the ToolsVersion is defined. Le paramètre $(MSBuildToolsPath) dans le Registre ou dans le fichier de configuration spécifie l’emplacement des tâches et des cibles principales.The $(MSBuildToolsPath) setting in the registry or the configuration file specifies the location of the core tasks and targets. Dans le fichier projet, ceci correspond à la propriété $(MSBuildBinPath) et à la propriété $(MSBuildToolsPath).In the project file, this maps to the $(MSBuildBinPath) property, and also to the $(MSBuildToolsPath) property.

  • $(MSBuildToolsPath) est une propriété réservée qui est fournie par la propriété MSBuildToolsPath spécifiée dans le fichier de configuration.$(MSBuildToolsPath) is a reserved property that is supplied by the MSBuildToolsPath property that is specified in the configuration file. (Cette propriété remplace $(MSBuildBinPath).(This property replaces $(MSBuildBinPath). Cependant, $(MSBuildBinPath) est conservé pour des raisons de compatibilité.) Un ensemble d’outils personnalisé doit définir $(MSBuildToolsPath) ou $(MSBuildBinPath), mais pas les deux, sauf si tous les deux ont la même valeur.However, $(MSBuildBinPath) is carried forward for compatibility.) A custom toolset must define either $(MSBuildToolsPath) or $(MSBuildBinPath) but not both, unless they both have the same value.

    Vous pouvez également ajouter des propriétés personnalisées spécifiques à ToolsVersion au fichier de configuration, en utilisant la même syntaxe que celle utilisée pour ajouter la propriété MSBuildToolsPath.You can also add custom, ToolsVersion-specific properties to the configuration file by using the same syntax that you use to add the MSBuildToolsPath property. Pour rendre ces propriétés personnalisées disponibles pour le fichier projet, utilisez le même nom que celui de la valeur spécifiée dans le fichier de configuration.To make these custom properties available to the project file, use the same name as the name of the value that is specified in the configuration file. Dans le fichier de configuration, vous pouvez définir des ensembles d’outils, mais pas des sous-ensembles d’outils.You may define toolsets but not sub-toolsets in the configuration file.

Voir aussiSee Also

Ensemble d’outils (ToolsVersion)Toolset (ToolsVersion)