Partager via


Ensemble d'outils MSBuild (ToolsVersion)

MSBuild utilise un ensemble d'outils de tâches, de cibles, et d'outils pour générer une application.En général, un ensemble d'outils MSBuild inclut un fichier de 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 à plusieurs versions du.NET Framework et à plusieurs plateformes du système.Toutefois, l'ensemble d'outils MSBuild 2,0 peut être utilisé pour cibler .NET Framework 2.0.

Attribut ToolsVersion

Spécifiez l'ensemble d'outils de l'attribut d' ToolsVersion sur l'élément de projet 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 2,0.

<Project ToolsVersion="2.0" ... </Project>

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 du .NET Framework qui est incluse dans l'édition de Visual Studio.Pour plus d’informations, consultez Détermination d'une version ou d'un profil spécifique du .NET Framework.

Lorsqu'une valeur d' ToolsVersion est définie dans un fichier projet, les utilisations de MSBuild cette valeur pour déterminer les valeurs des propriétés d'ensemble d'outils qui sont disponibles au projet.Une propriété d'ensemble d'outils est $(MSBuildToolsPath), qui spécifie le chemin d'accès des outils.NET Framework.Uniquement cette propriété d'ensemble d'outils (ou $(MSBuildBinPath)), est requise.

Dans l'exemple suivant, MSBuild recherche le fichier Microsoft.CSharp.targets en utilisant la propriété réservée par MSBuildToolsPath .

<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

Vous pouvez modifier la valeur d' MSBuildToolsPath en définissant un ensemble d'outils personnalisé.Pour plus d’informations, voir Configurations standard et personnalisée de l'ensemble d'outils.

Lorsque vous générez une solution sur la ligne de commande et spécifiez ToolsVersion pour msbuild.exe, tous les projets et leurs dépendances entre projets sont générés d'après cet ToolsVersion, même si chaque projet dans la solution spécifie son propre ToolsVersion.Pour définir la valeur d' ToolsVersion sur par base de projet, consultez l' Substitution des paramètres ToolsVersion.

l'attribut d' ToolsVersion est également utilisé pour le transfert 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 n'identifie pas ToolsVersion mis à jour et n'établit pas par conséquent le projet comme si l'attribut a toujours la valeur 3,5.

Utilisation de Visual Studio 2010 et Visual Studio 2012 un ToolsVersion de 4,0.Dans de nombreux cas, vous pouvez ouvrir le projet dans les deux versions de Visual Studio sans modification.

Les Sub- ensembles d'outils, qui sont décrits plus loin dans cette rubrique, permettent à MSBuild automatiquement basculez qui définit des outils à utiliser selon le contexte dans lequel la génération.Par exemple, MSBuild utilise un plus nouvel ensemble d'outils lorsqu'il est exécuté dans Visual Studio 2012 que lorsqu'il est exécuté dans Visual Studio 2010, sans l'avoir explicitement modifier le fichier projet.Pour plus d’informations, consultez Comment : Modifiez un système de projet afin que les projets sont chargées dans plusieurs versions de Visual Studio.

Implémentation d'ensemble d'outils

Implémentez un ensemble d'outils en sélectionnant les chemins d'accès des outils, des cibles, et tâches qui composent l'ensemble d'outils.Les outils dans l'ensemble d'outils à MSBuild définit proviennent des sources suivantes :

  • Le répertoire.NET Framework.

  • Outils managés supplémentaires.

Les outils incluent managés ResGen.exe et TlbImp.exe.

MSBuild offre deux moyens d'accéder à l'ensemble d'outils :

  • En utilisant les propriétés d'ensemble d'outils

  • En utilisant des méthodes d' ToolLocationHelper

Les propriétés d'ensemble d'outils spécifient les chemins d'accès des outils.MSBuild utilise la valeur de l'attribut d' ToolsVersion dans le fichier projet pour rechercher la clé de Registre correspondante, puis utilise les informations de la clé de Registre pour définir les propriétés d'ensemble d'outils.Par exemple, si ToolsVersion a la valeur 4,0, puis MSBuild définit les propriétés d'ensemble d'outils en fonction de la clé de Registre : HKLM \Software\Microsoft\MSBuild\ToolsVersions \ 4,0.

Ce sont des propriétés d'ensemble d'outils :

  • MSBuildToolsPath spécifie le chemin d'accès des outils.NET Framework.

  • SDK40ToolsPath spécifie le chemin d'accès des outils managés supplémentaires pour MSBuild 4,0.

  • SDK35ToolsPath spécifie le chemin d'accès des outils managés supplémentaires pour MSBuild 3,5.

Sinon, vous pouvez déterminer l'ensemble d'outils par programme en appelant les méthodes de classe d' ToolLocationHelper .La classe inclut ces méthodes :

Bb383796.collapse_all(fr-fr,VS.110).gifSub-ensembles d'outils

Comme décrit précédemment dans cette rubrique, MSBuild utilise une clé de Registre pour spécifier le chemin d'accès des outils de base.Si la clé a une sous-clé, MSBuild l'utilise pour spécifier le chemin d'accès d'un Sub- ensemble d'outils qui contient des outils supplémentaires.Dans ce cas, l'ensemble d'outils est défini en combinant les définitions de propriété définies dans les deux clés.

[!REMARQUE]

Si les noms de propriété d'ensemble d'outils se heurtent, la valeur définie pour le chemin de sous-clé remplace la valeur définie pour le chemin de clé racine.

Les Sub- ensembles d'outils sont actifs en présence de la propriété de génération d' VisualStudioVersion .Cette propriété peut prendre l'une de ces valeurs :

  • « 10,0 » spécifie le Sub- ensemble d'outils.NET Framework 4

  • « 11,0 » spécifie le Sub- ensemble d'outils.NET Framework 4,5

Pendant une génération, MSBuild détermine automatiquement et définit une valeur par défaut pour la propriété d' VisualStudioVersion si ce n'est déjà définie.

MSBuild fournit des surcharges pour les méthodes d' ToolLocationHelper qui ajoutent une valeur énumérée par VisualStudioVersion comme paramètre.En outre, MSBuild fournit ces nouvelles méthodes pour retourner les chemins d'accès des outils natifs supplémentaires :

  • GetPathToWindowsSdk

  • GetPathToWindowsSdkFile

Ces nouvelles méthodes acceptent également une valeur énumérée par VisualStudioVersion comme paramètre pour déterminer qui Sub- ensemble d'outils à utiliser.L'énumération d' VisualStudioVersion peut avoir l'une des valeurs suivantes :

  • VisualStudio10

  • VisualStudio11

  • VisualStudioLatest

Les Sub- ensembles d'outils ont été introduites dans le.NET Framework 4,5.

Voir aussi

Concepts

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

Autres ressources

Vue d'ensemble du multi-ciblage MSBuild