Créer une configuration personnalisée de l'ensemble d'outils
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. MSBuild inclut un ensemble d’outils standard, mais vous pouvez également créer des ensembles d’outils personnalisés.
Configurations de l’ensemble d’outils standard
MSBuild contient l’ensemble d’outils standard Current
qui référence la version actuelle de MSBuild, qui est installée dans le dossier MSBuild\Current\Bin sous le répertoire d’installation de Visual Studio.
Définitions d’ensembles d’outils personnalisés
Quand un ensemble d’outils standard ne répond pas à vos exigences de build, vous pouvez créer un Toolset
personnalisé. 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 C++. En utilisant un Toolset
personnalisé, vous pouvez affecter des valeurs personnalisées à l’attribut ToolsVersion
lors de l’exécution de MSBuild.exe à l’aide du commutateur de ligne de commande /toolsVersion
. Si vous spécifiez l’attribut ToolsVersion
dans le fichier projet, il est ignoré.
Il est également possible d’utiliser la propriété $(MSBuildToolsPath)
pour importer des fichiers .targets à partir de ce répertoire, ainsi que de définir ses propres propriétés d’ensemble d’outils personnalisé pour pouvoir les utiliser à chaque projet exploitant cet ensemble d’outils.
Spécifiez un ensemble d’outils personnalisé dans le fichier de configuration de MSBuild.exe (ou de l’outil personnalisé qui héberge le moteur MSBuild si c’est ce que vous utilisez). Par exemple, le fichier de configuration de MSBuild.exe pourrait inclure la définition Toolset
suivante si vous souhaitiez définir un ensemble d’outils nommé MyCustomToolset.
<msbuildToolsets default="MyCustomToolset">
<toolset toolsVersion="MyCustomToolset">
<property name="MSBuildToolsPath"
value="C:\SpecialPath" />
</toolset>
</msbuildToolsets>
<msbuildToolsets>
doit également être défini comme suit dans le fichier de configuration.
<configSections>
<section name="msbuildToolsets"
type="Microsoft.Build.BuildEngine.ToolsetConfigurationSection,
Microsoft.Build, Version=15.1.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a">
</section>
</configSections>
Notes
Pour que la lecture se fasse correctement, <configSections>
doit être la première sous-section de la section <configuration>
.
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. 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.
Les propriétés suivantes sont spécifiques à la valeur de ToolsVersion
qui est utilisée dans les projets :
$(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. Le paramètre$(MSBuildToolsPath)
dans le Registre ou dans le fichier de configuration spécifie l’emplacement des tâches et des cibles principales. Dans le fichier projet, ceci correspond à la propriété $(MSBuildBinPath) et à la propriété $(MSBuildToolsPath).$(MSBuildToolsPath)
est une propriété réservée qui est fournie par la propriété MSBuildToolsPath spécifiée dans le fichier de configuration. (Cette propriété remplace$(MSBuildBinPath)
. Toutefois,$(MSBuildBinPath)
est conservé pour des raisons de compatibilité.) Un ensemble d’outils personnalisé doit définir$(MSBuildToolsPath)
ou$(MSBuildBinPath)
, mais pas les deux, sauf s’ils ont tous les deux la même valeur.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. 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. Dans le fichier de configuration, il est possible de définir des ensembles d’outils, mais pas des sous-ensembles d’outils.