Überschreiben von ToolsVersion-Einstellungen

Sie können das Toolset für eine Projektdatei auswählen, indem Sie den /ToolsVersion Schalter (oder /tv, kurz) verwenden oder die $(ProjectToolsVersion)-Eigenschaft festlegen.So können Sie ein Projekt in einer Projektmappe mit einer Toolsetversion erstellen, die von der der anderen Projekte unterscheidet.Sie können die Toolversion auch überschreiben, die von einer MSBuild-Aufgabe verwendet wird, indem Sie den ToolsVersion Aufgabenparameter festlegen.

Überschreiben der ToolsVersion-Einstellungen von Projekten in Befehlszeilenbuilds

Obwohl Build Visual Studio-Projekte in der Regel mit der Toolsversion, der in der Projektdatei angegeben ist, Sie den Schalter /ToolsVersion(oder, /tv) in der Befehlszeile verwenden, um diesen Wert zu überschreiben und alle Projekte und die Projekt-zuProjektabhängigkeiten mit einem anderen Toolset erstellen.Beispiel:

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

In diesem Beispiel werden alle Projekte mit ToolsVersion 3.5 erstellt.(Siehe jedoch auch den Abschnitt "Rangfolge" weiter unten in diesem Thema.)

Bei Verwendung des /tv-Schalters in der Befehlszeile können Sie optional die $(ProjectToolsVersion)-Eigenschaft für einzelne Projekte verwenden, um diese mit einem anderen ToolsVersion-Wert als für andere Projekte in der Projektmappe zu erstellen.

Überschreiben der ToolsVersion-Einstellung mit dem ToolsVersion-Parameter der MSBuild-Aufgabe

Die MSBuild-Aufgabe dient einem Projekt primär dazu, ein anderes Projekt zu erstellen.Damit die MSBuild-Aufgabe ein Projekt mit einer anderen ToolsVersion als der im Projekt angegebenen erstellen kann, stellt sie einen optionalen Aufgabenparameter mit dem Namen ToolsVersion zur Verfügung.Das folgende Beispiel zeigt, wie Sie diesen Parameter verwendet:

  1. Erstellen Sie eine Datei, die projectA.proj namens und mit dem folgenden Code:

    <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. Erstellen Sie eine andere Datei, die projectB.proj namens und mit dem folgenden Code:

    <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. Geben Sie an einer Eingabeaufforderung den folgenden Befehl ein:

    msbuild projectA.proj /t:go /toolsversion:3.5
    
  4. Die folgende Ausgabe angezeigt wird.Für projectA überschreibt /toolsversion:3.5, das in der Befehlszeile festlegen, ToolsVersion=4.0, das im Project-Tag festlegen.

    ProjectB wird durch eine Aufgabe in projectA aufgerufen.Diese Aufgabe ToolsVersion=2.0, die die anderen ToolsVersion Einstellungen für projectB überschreibt.

    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
    

Rangfolge

Die Rangfolge, von oben nach unten, ToolsVersion verwendet, um zu bestimmen, das von einem Projekt erstellt wird, ist:

  1. Das ToolsVersion-Attribut in der MSBuild-Aufgabe verwendet, um das Projekt zu erstellen, sofern vorhanden.

  2. Der Schalter /toolsversion (oder /tv), der im msbuild.exe-Befehl verwendet wird, sofern vorhanden.

  3. Das - Attribut des - Elements ToolsVersionProjekt der Projektdatei.

  4. Die standardmäßige Toolsversion in der MSBuild.exe.config-Datei.

  5. Die standardmäßige Toolsversion in der Registrierung.Weitere Informationen finden Sie unter Standardmäßige und benutzerdefinierte Toolsetkonfigurationen.

Nummer 1, 2 und 3 sind das gleiche wie Eigenschaften:

  • Eigenschaftenattribute in der MSBuild-Aufgabe

  • /p: Schalter in msbuild.exe

  • Eigenschaftentag in der Projektdatei

Siehe auch

Konzepte

MSBuild-Toolset (ToolsVersion)

Standardmäßige und benutzerdefinierte Toolsetkonfigurationen

Weitere Ressourcen

Übersicht über die Festlegung von Zielversionen mit MSBuild

MSBuild-Grundlagen