標準和自訂工具組的組態
MSBuild 工具組包含工作、可用來建立應用程式專案的目標和工具。MSBuild 包括標準工具組,不過,您也可以建立自訂工具組。如需如何指定工具組的詳細資訊,請參閱 MSBuild Toolset (ToolsVersion)
標準工具組的組態
MSBuild 4.5 包含下列標準工具組:
ToolsVersion |
Toolset 路徑 (MSBuildToolsPath 或 MSBuildBinPath 組建上指定屬性) |
---|---|
2.0 |
Windows 安裝路徑\ Microsoft.Net \ Framework \ v2.0.50727 \ |
3.5 |
Windows 安裝路徑\Microsoft.NET\Framework\v3.5.20223\ |
4.0 |
Windows 安裝路徑\Microsoft.NET\Framework\v4.0.30319\ |
ToolsVersion 值決定 Visual Studio 產生的專案使用哪一個工具組。您指定 ToolsVersion 做為屬性在專案檔的 Project 項目,不過,您可以覆寫該屬性使用 /toolsversion 參數在命令提示字元。如需此屬性的詳細資訊,這個參數及其他方式指定 ToolsVersion,請參閱 覆寫 ToolsVersion 設定。
如果 ToolsVersion 未指定,下列索引鍵定義 ToolsVersion。
登錄區 |
索引鍵名稱 |
字串機碼值 |
---|---|---|
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\3.5\ |
DefaultToolsVersion |
2.0 |
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\4.0\ |
DefaultToolsVersion |
2.0 |
下列登錄機碼指定的 .NET Framework 版本的安裝路徑與每 ToolsVersion。安裝路徑也指定 MSBuild.exe 的位置,以定義工具組資訊。
登錄區 |
索引鍵名稱 |
字串機碼值 |
---|---|---|
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\2.0\ |
MSBuildToolsPath |
使用 .NET Framework 安裝路徑 |
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\3.5\ |
MSBuildToolsPath |
為 .NET Framework 安裝路徑 |
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0\ |
MSBuildToolsPath |
.NET Framework 的安裝路徑 |
子 Toolset
如果登錄機碼上表中有一個子機碼, MSBuild 會使用它來判斷包含多個工具子 Toolset 的路徑。下列子機碼是範例:
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0\11.0
VisualStudioVersion 建置屬性表示子 Toolset 是否已經變成作用中。例如, VisualStudioVersion 值為「列」指定 .NET Framework 4.5 子工具組。子 Toolset 區分 MSBuild Toolset (ToolsVersion)(如需詳細資訊,請參閱
注意事項 |
---|
建議您避免變更這些設定。然而,因為,下一節所述,您可以加入自己的設定和定義電腦自訂工具組定義。 |
自訂工具組定義
當標準工具組無法滿足建置需求時,您可以建立自訂工具組。例如,您可能有必須有建立的 Visual C++ 專案不同的系統上建置實驗室案例中。使用自訂工具組,,當您建立專案或執行 MSBuild.exe 時,您可以指定自訂值給 ToolsVersion 屬性。這樣一來,您也可以使用 $(MSBuildToolsPath) 屬性匯入 .targets 檔案從該目錄。
指定自訂工具組組態檔為 MSBuild.exe (或裝載 MSBuild 引擎的自訂工具的,如果這就是您使用)。例如, MSBuild.exe 的組態檔中包含下列工具組定義。
<msbuildToolsets default="3.0">
<toolset toolsVersion="4.0">
<property name="MSBuildToolsPath"
value="C:\Windows\Microsoft .NET\Framework\v3.0" />
</toolset>
</msbuildToolsets>
必須在組態檔中定義<msbuildToolsets> ,如下所示。
<configSections>
<section name="msbuildToolsets"
Type="Microsoft.Build.BuildEngine.ToolsetConfigurationSection,
Microsoft.Build.Engine, Version=3.5.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a"
</section>
</configSections>
注意事項 |
---|
將正確讀取, <configSections> 必須是 <configuration> 部分的第一個子區段。 |
ToolsetConfigurationSection 是自訂的組態區段,自訂組態的任何主應用程式都可使用此區段。如果您使用自訂工具組,主應用程式除了提供組態檔項目,無須再執行任何動作,就可初始化建置引擎。藉由在登錄定義項目,您可以指定電腦通用工具組,此工具組適用於 MSBuild.exe、Visual Studio 和 MSBuild 的所有主應用程式
注意事項 |
---|
如果在登錄中已經定義的組態檔定義 ToolsVersion 的設定,這兩個定義不會合併。在組態檔中定義的優先順序最高,因此在登錄中設定該 ToolsVersion 的會被忽略。 |
下列屬性是針對專案中所使用 ToolsVersion 的值:
$ (MSBuildBinPath) 設為指定在登錄或組態檔 ToolsVersion 定義的 ToolsPath 值。設定在登錄或組態檔的 $(MSBuildToolsPath) 指定工具組的位置。在專案檔中,這相當於 $(MSBuildBinPath) 屬性,也相當於 $(MSBuildToolsPath) 屬性。
$ (MSBuildToolsPath) 是 MSBuildToolsPath 屬性提供在組態檔中指定的保留屬性。(此屬性取代 $(MSBuildBinPath)。不過,為相容性考量,仍沿用 $(MSBuildBinPath))。
您也可以使用加入 MSBuildToolsPath 屬性的相同語法,將自訂的 ToolsVersion 特有屬性加入組態檔。為了要讓這些自訂屬性可用專案檔,請使用名稱和組態檔中所指定的值相同的名稱。