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.
L’attribut 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 sans problème. Cet article décrit son utilisation dans les versions antérieures de MSBuild ou pour les ensembles d’outils personnalisés. Consultez Configurations standard et personnalisées de l’ensemble d’outils.
Vous pouvez changer l’ensemble d’outils pour les projets et les solutions de trois manières :
Avec le commutateur
-ToolsVersion(ou-tven abrégé) lors de la génération du projet ou de la solution en ligne de commande.En définissant le paramètre
ToolsVersionsur la tâche MSBuild.En définissant la propriété
$(ProjectToolsVersion)sur un projet dans une solution. Cela vous permet de générer un projet dans une solution avec une version de l’Ensemble d’outils qui diffère de celle des autres projets.
Écraser les paramètres ToolsVersion de projets et de solutions sur des générations en ligne de commande
Bien que les projets Visual Studio soient généralement générés avec la version ToolsVersion spécifiée dans le fichier projet, vous pouvez utiliser le commutateur -ToolsVersion (ou -tv) sur la ligne de commande pour substituer cette valeur et générer tous les projets et leurs dépendances projet-à-projet avec un autre Ensemble d’outils. Par exemple :
msbuild.exe someproj.proj -tv:12.0 -p:Configuration=Debug
Dans cet exemple, tous les projets sont générés à l’aide de ToolsVersion 12.0. (Voir cependant la section Ordre de priorité plus loin dans cette rubrique.)
Quand vous utilisez le commutateur -tv sur la ligne de commande, vous pouvez éventuellement utiliser la propriété $(ProjectToolsVersion) dans des projets pour les générer avec une autre valeur de ToolsVersion que les autres projets dans la solution.
Écraser les paramètres ToolsVersion avec le paramètre ToolsVersion de la tâche MSBuild
La tâche MSBuild est le moyen principal par lequel un projet peut en générer un autre. Pour permettre à la tâche MSBuild de générer un projet avec des paramètres ToolsVersion différents de ceux spécifiés dans le projet, un paramètre de tâche facultatif nommé ToolsVersion est disponible. L’exemple suivant illustre comment utiliser ce paramètre :
Créez un fichier nommé projectA.proj et contenant le code suivant :
<Project> <Target Name="go" > <Message Text="projectA.proj" /> <Message Text="MSBuildToolsVersion: $(MSBuildToolsVersion)" /> <Message Text="MSBuildToolsPath: $(MSBuildToolsPath)" /> <MSBuild Projects="projectB.proj" ToolsVersion="2.0" Targets="go" /> </Target> </Project>Créez un autre fichier nommé projectB.proj et contenant le code suivant :
<Project> <Target Name="go"> <Message Text="projectB.proj" /> <Message Text="MSBuildToolsVersion: $(MSBuildToolsVersion)" /> <Message Text="MSBuildToolsPath: $(MSBuildToolsPath)" /> </Target> </Project>À l’invite de commandes, tapez la commande suivante :
msbuild projectA.proj -t:go -toolsversion:3.5La sortie suivante apparaît. Pour
projectA, le paramètre-toolsversion:3.5de la ligne de commande remplace le paramètreToolsVersion=12.0dans la baliseProject.ProjectBest appelé par une tâche dansprojectA. Cette tâche aToolsVersion=2.0, qui remplace les autres paramètresToolsVersionpourprojectB.Output: projectA.proj MSBuildToolsVersion: 3.5 MSBuildToolsPath: C:\Windows\Microsoft.NET\Framework\v3.5 projectB.proj MSBuildToolsVersion: 2.0 MSBuildToolsPath: C:\Windows\Microsoft.NET\Framework\v2.0.50727
Ordre de priorité
L’ordre de priorité, du plus élevé au plus bas, utilisé pour déterminer ToolsVersion est le suivant :
L’attribut
ToolsVersionsur la tâche MSBuild utilisé pour générer le projet, le cas échéant.Le commutateur
-toolsversion(ou-tv) utilisé dans la commande msbuild.exe, le cas échéant.Si la variable d’environnement
MSBUILDTREATALLTOOLSVERSIONSASCURRENTest définie, utiliser le paramètreToolsVersionactuel.Si la variable d’environnement
MSBUILDTREATHIGHERTOOLSVERSIONASCURRENTest définie et que la valeur deToolsVersiondéfinie dans le fichier projet est supérieure à la valeur actuelle deToolsVersion, utiliser la valeur actuelle deToolsVersion.Si la variable d’environnement
MSBUILDLEGACYDEFAULTTOOLSVERSIONest définie, ou siToolsVersionn’est pas défini, l’ordre de priorité est le suivant :L’attribut
ToolsVersionde l’élément Project du fichier projet. Si cet attribut n’existe pas, il est supposé être égal à la version actuelle.La version des outils par défaut dans le fichier MSBuild.exe.config.
La version des outils par défaut dans le Registre. Pour plus d’informations, voir Configurations standard et personnalisées des ensembles d’outils.
Si la variable d’environnement
MSBUILDLEGACYDEFAULTTOOLSVERSIONn’est pas définie, l’ordre de priorité est le suivant :Si la variable d’environnement
MSBUILDDEFAULTTOOLSVERSIONest définie sur uneToolsVersionqui existe, elle est utilisée.Si
DefaultOverrideToolsVersionest défini dans MSBuild.exe.config, il est utilisé.Si
DefaultOverrideToolsVersionest défini dans le Registre, il est utilisé.Sinon, utilisez la valeur actuelle de
ToolsVersion.