Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de changer d’annuaire.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer d’annuaire.
Un ensemble d’outils MSBuild inclut un fichier microsoft.common.tasks , un fichier microsoft.common.targets et des compilateurs tels que csc.exe et vbc.exe. La plupart des ensembles d’outils peuvent être utilisés pour compiler des applications vers plusieurs versions du .NET Framework et plusieurs plateformes système. Toutefois, l’ensemble d’outils MSBuild 2.0 peut être utilisé pour cibler uniquement le .NET Framework 2.0.
L’attribut MSBuild ToolsVersion sur l’élément Project dans les fichiers projet Visual Studio et MSBuild est considéré comme obsolète dans Visual Studio 2019 et versions ultérieures. Vous pouvez le supprimer en toute sécurité. Cet article décrit son utilisation dans les versions antérieures de MSBuild ou pour les ensembles d’outils personnalisés. Consultez les configurations d’ensemble d’outils standard et personnalisées.
Attribut ToolsVersion
Spécifiez l’ensemble d’outils dans l’attribut ToolsVersion sur l’élément Project dans le fichier projet. L’exemple suivant spécifie que le projet doit être généré à l’aide de l’ensemble d’outils MSBuild « Actuel ».
<Project ToolsVersion="Current" ... </Project>
Remarque
Certains types de projet utilisent l’attribut sdk au lieu de ToolsVersion. Pour plus d’informations, consultez Ajouts au format csproj pour .NET Core.
Fonctionnement de l’attribut ToolsVersion
Lorsque vous créez un projet dans Visual Studio ou mettez à niveau un projet existant, un attribut nommé ToolsVersion est automatiquement inclus dans le fichier projet et sa valeur correspond à la version de MSBuild incluse dans l’édition Visual Studio. Pour plus d’informations, consultez Vue d’ensemble du ciblage de l’infrastructure.
Lorsqu’une ToolsVersion valeur est définie dans un fichier projet, MSBuild utilise cette valeur pour déterminer les valeurs des propriétés de l’ensemble d’outils disponibles pour le projet. Une propriété Toolset est $(MSBuildToolsPath), qui spécifie le chemin des outils .NET Framework. Seule la propriété Toolset (ou $(MSBuildBinPath)) est requise.
À compter de Visual Studio 2013, la version de l’ensemble d’outils MSBuild est identique au numéro de version de Visual Studio. MSBuild est défini par défaut sur cet ensemble d’outils dans Visual Studio et sur la ligne de commande, quelle que soit la version de l’ensemble d’outils spécifiée dans le fichier projet. Ce comportement peut être remplacé à l’aide de l’indicateur de -ToolsVersion. Pour plus d’informations, consultez Remplacer les paramètres ToolsVersion.
Dans l’exemple suivant, MSBuild recherche le fichier Microsoft.CSharp.targets à l’aide de la MSBuildToolsPath propriété réservée.
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
Vous pouvez modifier la valeur de l’ensemble d’outils MSBuildToolsPath personnalisé en définissant un ensemble d’outils personnalisé. Pour plus d’informations, consultez configurations standard et personnalisées de l’ensemble d’outils.
Lorsque vous générez une solution sur la ligne de commande et spécifiez une ToolsVersion pour msbuild.exe, tous les projets et leurs dépendances de projet à projet sont générés en fonction de cela ToolsVersion, même si chaque projet dans la solution spécifie son propre ToolsVersionprojet. Pour définir la ToolsVersion valeur par projet, consultez les paramètres ToolsVersion substitués.
L’attribut ToolsVersion est également utilisé pour la migration de projet. Par exemple, si vous ouvrez un projet Visual Studio 2008 dans Visual Studio 2010, le fichier projet est mis à jour pour inclure ToolsVersion="4.0 ». Si vous essayez ensuite d’ouvrir ce projet dans Visual Studio 2008, il ne reconnaît pas la mise à niveau ToolsVersion et génère donc le projet comme si l’attribut était toujours défini sur 3.5.
Visual Studio 2010 et Visual Studio 2012 utilisent une version ToolsVersion de 4.0. Visual Studio 2013 utilise une version ToolsVersion de 12.0. Visual Studio 2015 utilise ToolsVersion 14.0 et Visual Studio 2017 utilise ToolsVersion 15.0. Dans de nombreux cas, vous pouvez ouvrir le projet dans plusieurs versions de Visual Studio sans modification. Visual Studio utilise toujours l’ensemble d’outils approprié, mais vous serez averti si la version utilisée ne correspond pas à la version dans le fichier projet. Dans presque tous les cas, cet avertissement est bénin, car les ensembles d’outils sont compatibles dans la plupart des cas.
Les sous-ensembles d’outils, décrits plus loin dans cette rubrique, permettent à MSBuild de basculer automatiquement l’ensemble d’outils à utiliser en fonction du contexte dans lequel la build est en cours d’exécution. Par exemple, MSBuild utilise un ensemble plus récent d’outils lorsqu’il est exécuté dans Visual Studio 2012 que lorsqu’il est exécuté dans Visual Studio 2010, sans avoir à modifier explicitement le fichier projet.
Implémentation de l’ensemble d’outils
Implémentez un ensemble d’outils en sélectionnant les chemins des différents outils, cibles et tâches qui composent l’ensemble d’outils. Les outils de l’ensemble d’outils que MSBuild définit proviennent des sources suivantes :
Dossier .NET Framework.
Outils managés supplémentaires.
Les outils managés incluent ResGen.exe et TlbImp.exe.
MSBuild offre deux façons d’accéder à l’ensemble d’outils :
À l’aide des propriétés de l’ensemble d’outils
En utilisant des ToolLocationHelper méthodes
Les propriétés de l’ensemble d’outils spécifient les chemins des outils. À compter de Visual Studio 2017, MSBuild n’a plus d’emplacement fixe. Par défaut, il se trouve dans le dossier MSBuild\15.0\Bin par rapport à l’emplacement d’installation de Visual Studio. Dans les versions antérieures, MSBuild utilise la valeur de l’attribut ToolsVersion dans le fichier projet pour localiser la clé de Registre correspondante, puis utilise les informations de la clé de Registre pour définir les propriétés de l’ensemble d’outils. Par exemple, si ToolsVersion elle a la valeur 12.0, MSBuild définit les propriétés de l’ensemble d’outils en fonction de cette clé de Registre : HKLM\Software\Microsoft\MSBuild\ToolsVersions\12.0.
Voici les propriétés de l’ensemble d’outils :
MSBuildToolsPathspécifie le chemin des fichiers binaires MSBuild.SDK40ToolsPathspécifie le chemin d’accès d’outils managés supplémentaires pour MSBuild 4.x (qui peut être 4.0 ou 4.5).SDK35ToolsPathspécifie le chemin d’accès d’outils managés supplémentaires pour MSBuild 3.5.
Vous pouvez également déterminer l’ensemble d’outils par programmation en appelant les méthodes de la ToolLocationHelper classe. La classe inclut ces méthodes :
GetPathToDotNetFramework retourne le chemin du dossier .NET Framework.
GetPathToDotNetFrameworkFile retourne le chemin d’accès d’un fichier dans le dossier .NET Framework.
GetPathToDotNetFrameworkSdk retourne le chemin d’accès du dossier outils managés.
GetPathToDotNetFrameworkSdkFile retourne le chemin d’accès d’un fichier, qui se trouve généralement dans le dossier outils managés.
GetPathToBuildTools retourne le chemin des outils de génération.