Freigeben über


MSBuild-Toolset (ToolsVersion)

MSBuild verwendet ein Toolset von Aufgaben, von Zielen, und von Tools, eine Anwendung zu erstellen.In der Regel enthält ein MSBuild Toolset eine microsoft.common.tasks-Datei, eine microsoft.common.targets-Datei und Compiler wie csc.exe und vbc.exe ein.Die meisten Toolsets können verwendet werden, um Anwendungen zu mehr als eine Version von .NET Framework und zu mehr als einer Systemplattform zu kompilieren.Allerdings kann das Toolset MSBuild 2,0 nur verwendet werden, um .NET Framework 2.0 abzuzielen.

ToolsVersion-Attribut

Geben Sie das Toolset im ToolsVersion-Attribut auf dem Projekt-Element in der Projektdatei an.Das folgende Beispiel gibt an, dass das Projekt erstellt werden soll, indem Sie das Toolset MSBuild 2,0 verwendet.

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

So funktioniert das ToolsVersion-Attribut

Wenn Sie in Visual Studio ein Projekt erstellen oder ein vorhandenes Projekt aktualisieren, wird ein Attribut, das ToolsVersion genannt wird, automatisch in der Projektdatei enthalten und sein Wert entspricht der Version von .NET Framework, die in der Visual Studio-Edition enthalten ist.Weitere Informationen finden Sie unter Ausrichten auf eine bestimmte .NET Framework-Version oder ein bestimmtes .NET Framework-Profil.

Wenn ein ToolsVersion-Wert in einer Projektdatei definiert ist, MSBuild-Verwendung, die festlegen, um die Werte der Toolseteigenschaften zu bestimmen, die dem Projekt verfügbar sind.Eine Toolseteigenschaft ist $(MSBuildToolsPath), die den Pfad der .NET Framework-Tools angibt.Nur diese Toolseteigenschaft (oder $(MSBuildBinPath)), ist erforderlich.

Im folgenden Beispiel wird MSBuild die Microsoft.CSharp.targets-Datei, indem die MSBuildToolsPath reservierte Eigenschaft verwendet.

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

Sie können den Wert von MSBuildToolsPath ändern, indem Sie ein benutzerdefiniertes Toolset definieren.Weitere Informationen finden Sie unter Standardmäßige und benutzerdefinierte Toolsetkonfigurationen.

Wenn Sie eine Projektmappe in der Befehlszeile erstellen und ToolsVersion für msbuild.exe angeben, werden alle Projekte und die Projekt-zuProjektabhängigkeiten entsprechend diesem ToolsVersion erstellt, wenn jedes Projekt der Projektmappe in ein eigenes ToolsVersion angibt.Um den ToolsVersion-Wert auf eine pro Projektbasis zu definieren, finden Sie unter Überschreiben von ToolsVersion-Einstellungen.

Das ToolsVersion-Attribut wird auch für Projektmigration verwendet.Wenn Sie ein Visual Studio 2008-Projekt in Visual Studio 2010 öffnen, wird die Projektdatei aktualisiert, um ToolsVersion=" 4,0 " in enthalten.Wenn Sie anschließend versuchen, das Projekt in Visual Studio 2008 zu öffnen, erkennt keine aktualisierte ToolsVersion und wird daher das Projekt, als wenn das Attribut noch auf 3,5 festgelegt wurde.

verwenden Visual Studio 2010 und Visual Studio 2012 eine Toolsversion von 4,0.In vielen Fällen können Sie das Projekt in beiden Versionen von Visual Studio ohne Änderung öffnen.

Sub-Toolsets, die weiter unten in diesem Thema beschrieben werden, können MSBuild automatisch zu wechseln, die von den Tools festgelegt hat, um basierend auf dem Kontext zu verwenden, in den der Build ausgeführt wird.Beispielsweise MSBuild verwendet einen späteren Satz von Tools, wenn er in Visual Studio 2012 als, wenn er in Visual Studio 2010 ausgeführt wird, ohne das die Projektdatei ändern zu müssen explizit ausgeführt wird.Weitere Informationen finden Sie unter Gewusst wie: Ändern Sie ein Projektsystem damit Projekt-Last in mehreren Versionen von Visual Studio.

Toolset-Implementierung

Implementieren Sie ein Toolset, indem Sie die Pfade der verschiedenen Tools, der Ziele und Aufgaben auswählen, die das Toolset bilden.Die Tools im Toolset, das MSBuild definiert, stammen aus den folgenden Quellen:

  • Der .NET Framework-Ordner.

  • Zusätzliche verwaltete Tools.

Das verwaltete Tooleinschliessung ResGen.exe und TlbImp.exe.

MSBuild bietet zwei Möglichkeiten, auf das Toolset zuzugreifen:

  • Durch die Verwendung von Toolseteigenschaften

  • Durch die Verwendung von ToolLocationHelper-Methoden

Toolseteigenschaften geben die Pfade der Tools an.MSBuild verwendet ToolsVersion den Wert des Attributs in der Projektdatei, um den entsprechenden Registrierungsschlüssel zu suchen und verwendet dann die Informationen im Registrierungsschlüssel, um die Toolseteigenschaften festzulegen.Wenn ToolsVersion den Wert 4,0 hat, dann MSBuild legt die Toolseteigenschaften entsprechend diesem Registrierungsschlüssel fest: HKLM\Software\Microsoft\MSBuild\ToolsVersions\4.0.

Diese sind Toolseteigenschaften:

  • MSBuildToolsPath gibt den Pfad der .NET Framework-Tools an.

  • SDK40ToolsPath gibt den Pfad von zusätzlichen verwalteten Tools für MSBuild 4,0 an.

  • SDK35ToolsPath gibt den Pfad von zusätzlichen verwalteten Tools für MSBuild 3,5 an.

Wahlweise können Sie das Toolset programmgesteuert bestimmen, indem Sie die Methoden der - Klasse ToolLocationHelper aufrufen.Die - Klasse umfasst diese Methoden:

Bb383796.collapse_all(de-de,VS.110).gifSub-Toolsets

Wie bereits in diesem Thema beschrieben, MSBuild verwendet einen Registrierungsschlüssel, um den Pfad der grundlegenden Tools anzugeben.Wenn der Schlüssel einen Unterschlüssel hat, MSBuild verwendet diesen, um den Pfad eines SubToolsets anzugeben, das zusätzliche Tools enthält.In diesem Fall wird das Toolset definiert, indem die Eigenschaftendefinitionen kombiniert, die beiden Schlüssel definiert werden.

HinweisHinweis

Wenn Toolseteigenschaftennamen Konflikte zwischen Membernamen auftreten, überschreibt der Wert, der für den Unterschlüsselpfad definiert ist, den Wert, der für den Stammtastenpfad definiert ist.

Sub-Toolsets werden zugreifen kann der VisualStudioVersion-Buildeigenschaft aktiv.Diese Eigenschaft verwendet möglicherweise einen dieser Werte:

  • "10,0" gibt das .NET Framework 4-SubToolset an

  • "11,0" gibt das .NET Framework 4.5-SubToolset an

Während eines Builds MSBuild bestimmt automatisch und legt einen Standardwert für die VisualStudioVersion-Eigenschaft fest, wenn sie noch nicht definiert ist.

MSBuild stellt Überladungen für die ToolLocationHelper-Methoden bereit, die einen VisualStudioVersion-Enumerationswert als Parameter hinzufügen.Außerdem stellt MSBuild diese neuen Methoden, um die Pfade von zusätzlichen systemeigenen Tools zurückzugeben:

  • GetPathToWindowsSdk

  • GetPathToWindowsSdkFile

Diese neuen Methoden nehmen auch einen VisualStudioVersion-Enumerationswert als Parameter, um zu bestimmen, der das SubToolset zu verwenden.Die VisualStudioVersion-Enumeration kann einen der folgenden Werte aufweisen:

  • VisualStudio10

  • VisualStudio11

  • VisualStudioLatest

Sub-Toolsets wurden in .NET Framework 4.5 eingeführt.

Siehe auch

Konzepte

Standardmäßige und benutzerdefinierte Toolsetkonfigurationen

Weitere Ressourcen

Übersicht über die Festlegung von Zielversionen mit MSBuild