Standardmäßige und benutzerdefinierte Toolsetkonfigurationen
Ein MSBuild-Toolset enthält Aufgaben, Zielen und Tools, die Sie verwenden können, um ein Anwendungsprojekts.MSBuild enthält ein Standardtoolset ein, aber Sie können auch benutzerdefinierte Toolsets erstellen.Weitere Informationen dazu, wie Sie ein Toolset, finden Sie unter MSBuild-Toolset (ToolsVersion) angibt
Standard-Toolsetkonfigurationen
MSBuild 4.5 umfasst die folgenden Standardtoolsets:
ToolsVersion |
Toolset-Pfad (wie im Build MSBuildToolsPath oder MSBuildBinPath angegebene Eigenschaft) |
---|---|
2.0 |
Windows-Installationspfad\Microsoft.Net\Framework\v2.0.50727\ |
3.5 |
Windows-Installationspfad\Microsoft.NET\Framework\v3.5.20223\ |
4.0 |
Windows-Installationspfad\Microsoft.NET\Framework\v4.0.30319\ |
Der ToolsVersion-Wert bestimmt, welches Toolset von einem Projekt verwendet wird, das Visual Studio generiert.Sie geben ToolsVersion als Attribut im Projekt-Element der Projektdatei an, Sie können aber dieses Attribut überschreiben, indem Sie den /toolsversion Schalter an einer Eingabeaufforderung verwenden.Weitere Informationen zu diesem Attribut finden, dieser Schalter und andere Methoden, ToolsVersion anzugeben, Überschreiben von ToolsVersion-Einstellungen.
Wenn ToolsVersion nicht angegeben wird, werden die folgenden Tasten ToolsVersion.
Registrierungshive |
Schlüsselname |
Zeichenfolgen-Schlüsselwert |
---|---|---|
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\3.5\ |
DefaultToolsVersion |
2.0 |
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\4.0\ |
DefaultToolsVersion |
2.0 |
Die folgenden Registrierungsschlüssel geben den Installationspfad von .NET Framework-Versionen an, die jedem ToolsVersion zugeordnet werden.Der Installationspfad gibt auch den Speicherort von MSBuild.exe an, das die Toolsetinformationen definiert.
Registrierungshive |
Schlüsselname |
Zeichenfolgen-Schlüsselwert |
---|---|---|
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\2.0\ |
MSBuildToolsPath |
.NET Framework 2.0 installieren Pfad |
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\3.5\ |
MSBuildToolsPath |
.NET Framework 3.5 installieren Pfad |
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0\ |
MSBuildToolsPath |
.NET Framework 4 installieren Pfad |
Sub-Toolsets
Wenn der Registrierungsschlüssel in der vorherigen Tabelle einen Unterschlüssel hat, MSBuild verwendet diesen, um den Pfad eines SubToolsets zu bestimmen, das mehr Tools enthält.Im folgenden Unterschlüssel ist ein Beispiel:
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0\11.0
Die VisualStudioVersion-Buildeigenschaft gibt an, ob ein SubToolset aktiv ist.Beispielsweise gibt ein VisualStudioVersion-Wert von "11,0" das .NET Framework 4.5-SubToolset an.Weitere Informationen finden Sie im Sub-Toolsetabschnitt von MSBuild-Toolset (ToolsVersion).
Hinweis |
---|
Es wird empfohlen, dass Sie vermeiden, diese Einstellungen zu ändern.Sie können jedoch auch eigene Einstellungen hinzufügen und computerübergreifende benutzerdefinierte Toolsetdefinitionen festlegen, wie im nächsten Abschnitt beschrieben. |
Benutzerdefinierte Toolsetdefinitionen
Wenn ein Standardtoolset die Buildanforderungen nicht erfüllt, können Sie ein benutzerdefiniertes Toolset erstellen.Möglicherweise haben Sie ein Build-Laborszenario, in dem Sie ein separates System zum Erstellen von Projekten Visual C++ haben müssen.Indem Sie ein benutzerdefiniertes Toolset verwenden, können Sie benutzerdefinierte Werte in ToolsVersion-Attribut zuweisen, wenn Sie Projekte oder Ausführen MSBuild.exe erstellen. Auf diese Weise können Sie die $(MSBuildToolsPath)-Eigenschaft verwenden, um TARGETS-Dateien aus diesem Verzeichnis zu importieren.
Geben Sie ein benutzerdefiniertes Toolset in der Konfigurationsdatei für MSBuild.exe an (oder für das benutzerdefinierte Tool, das das MSBuild Modul hostet, wenn das ist, was Sie verwenden).Konfigurationsdatei für MSBuild.exe kann zum Beispiel die folgende Toolsetdefinition enthalten.
<msbuildToolsets default="3.0">
<toolset toolsVersion="4.0">
<property name="MSBuildToolsPath"
value="C:\Windows\Microsoft .NET\Framework\v3.0" />
</toolset>
</msbuildToolsets>
<msbuildToolsets> muss in der Konfigurationsdatei auch definiert werden, wie folgt.
<configSections>
<section name="msbuildToolsets"
Type="Microsoft.Build.BuildEngine.ToolsetConfigurationSection,
Microsoft.Build.Engine, Version=3.5.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a"
</section>
</configSections>
Hinweis |
---|
So sein ordnungsgemäß gelesen werden, muss der erste <configSections> Unterabschnitt <configuration> im Abschnitt. |
ToolsetConfigurationSection ist ein benutzerdefinierter Konfigurationsabschnitt, der von jedem Host für die benutzerdefinierte Konfiguration verwendet werden kann.Wenn Sie ein benutzerdefiniertes Toolset verwenden, muss ein Host keine Aktionen durchführen, um das Buildmodul zu initialisieren, sondern nur die Einträge in der Konfigurationsdatei zur Verfügung stellen.Indem Sie Einträge in der Registrierung definieren, können Sie computerübergreifende Toolsets angeben, die für MSBuild.exe, Visual Studio und alle Hosts von MSBuild angewendet werden können.
Hinweis |
---|
Wenn eine Konfigurationsdatei Einstellungen für ToolsVersion definiert, die bereits in der Registrierung definiert sind, werden die beiden Definitionen nicht zusammengeführt.Die Definition in der Konfigurationsdatei hat Vorrang und Einstellungen in der Registrierung für diese ToolsVersion werden ignoriert. |
Die folgenden Eigenschaften sind für den Wert der ToolsVersion bestimmt, der in Projekten verwendet wird:
$ (MSBuildBinPath) wird dem ToolsPath-Wert festgelegt, der entweder in der Registrierung oder der Konfigurationsdatei angegeben wird, in der ToolsVersion definiert ist.$(MSBuildToolsPath), das in der Registrierung oder in der Konfigurationsdatei festlegen, gibt den Speicherort des Toolsets an.In der Projektdatei wird dies der $(MSBuildBinPath)-Eigenschaft sowie der $(MSBuildToolsPath)-Eigenschaft zugeordnet.
$ (MSBuildToolsPath) ist eine reservierte Eigenschaft, die von der MSBuildToolsPath-Eigenschaft bereitgestellt wird, die in der Konfigurationsdatei angegeben wird.(Diese Eigenschaft ersetzt $(MSBuildBinPath).$(MSBuildBinPath) steht aus Kompatibilitätsgründen weiterhin zur Verfügung.)
Sie können auch benutzerdefinierte, Toolsversion-spezifische Eigenschaften zur Konfigurationsdatei hinzufügen, indem Sie die gleiche Syntax verwenden wie zum Hinzufügen der MSBuildToolsPath-Eigenschaft.Um diese benutzerdefinierten Eigenschaften zu machen für die Projektdatei, verwenden Sie den gleichen Namen wie der Name des Werts der in der Konfigurationsdatei angegeben wird.