Partager via


Substitution des paramètres ToolsVersion

Vous pouvez sélectionner l'ensemble d'outils pour un fichier projet à l'aide de le commutateur d' /ToolsVersion (ou d' /tv, en abrégé) ou en définissant la propriété d' $(ProjectToolsVersion) .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.Vous pouvez également substituer la version de l'outil utilisée par une tâche MSBuild en définissant le paramètre de tâche d' ToolsVersion .

Substituer les paramètres ToolsVersion de projets avec les générations de ligne de commande

Bien que les projets Visual Studio génèrent en général avec le ToolsVersion spécifié dans le fichier projet, vous pouvez utiliser le commutateur d' /ToolsVersion(ou, /tv) sur la ligne de commande pour remplacer cette valeur et générer tous les projets et leurs dépendances entre projets à un ensemble d'outils différent.Par exemple :

msbuild.exe someproj.proj /tv:3.5 /p:Configuration=Debug

Dans cet exemple, tous les projets sont générés à l'aide de ToolsVersion 3.5.(Toutefois, consultez la section « Ordre de priorité » présentée ultérieurement dans cette rubrique.)

Lorsque vous utilisez le commutateur /tv dans la ligne de commande, vous pouvez utiliser la propriété $(ProjectToolsVersion) dans les projets individuels pour les générer avec une valeur ToolsVersion différente des autres projets de la solution.

Substitution du paramètre ToolsVersion à l'aide du paramètre ToolsVersion de la tâche MSBuild.

La tâche MSBuild est le moyen principal d'un projet pour en générer un autre.Pour permettre à la tâche MSBuild de générer un projet avec un ToolsVersion différent de celui spécifié dans le projet, elle fournit un paramètre de tâche facultatif nommé ToolsVersion.L'exemple suivant montre comment utiliser ce paramètre :

  1. Créez un fichier nommé projectA.proj et qui contient le code suivant :

    <Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003"
    ToolsVersion="4.0">
    
        <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>
    
  2. Créez un autre fichier nommé projectB.proj et qui contient le code suivant :

    <Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003"
    ToolsVersion="4.0">
    
        <Target Name="go">
            <Message Text="projectB.proj" />
            <Message Text="MSBuildToolsVersion: $(MSBuildToolsVersion)" />
            <Message Text="MSBuildToolsPath:    $(MSBuildToolsPath)" />
        </Target>
    </Project>
    
  3. Sélectionnez la commande suivante à une invite de commandes :

    msbuild projectA.proj /t:go /toolsversion:3.5
    
  4. La sortie suivante apparaît.Pour projectA, /toolsversion:3.5 plaçant dans la ligne de commande remplace ToolsVersion=4.0 plaçant dans la balise d' Project .

    ProjectB est appelé par une tâche dans projectA.Cette tâche a ToolsVersion=2.0, qui remplace les autres paramètres d' ToolsVersion pour projectB.

    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é, de la plus élevée à la plus faible, utilisé pour déterminer ToolsVersion utilisé par un projet pour générer est :

  1. L'attribut d' ToolsVersion sur la tâche MSBuild utilisée pour générer le projet échéant.

  2. Le commutateur d' /toolsversion (ou /tv) utilisé dans l'ordre de msbuild.exe éventuelle.

  3. L'attribut d' ToolsVersion de l'élément d' Projet du fichier projet.

  4. La version des outils par défaut dans le fichier MSBuild.exe.config de.

  5. La version des outils par défaut dans le Registre.Pour plus d'informations, consultez Configurations standard et personnalisée de l'ensemble d'outils.

Les nombres 1, 2 et 3 sont les mêmes que propriétés :

  • Attribut Properties de la tâche MSBuild

  • /p: allumer msbuild.exe

  • Balise de propriété du fichier projet

Voir aussi

Concepts

Ensemble d'outils MSBuild (ToolsVersion)

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

Autres ressources

Vue d'ensemble du multi-ciblage MSBuild

Concepts MSBuild