建立自訂工具組設定

MSBuild 工具組包含可用來建置應用程式專案的工作、目標和工具的參考。 MSBuild 包含標準的工具組,但您也可以建立自訂工具組。

標準工具組設定

MSBuild 包含參考目前 MSBuild 版本的標準工具組 Current,該版本會安裝在 Visual Studio 安裝目錄下的 [msBuild\Current\Bin] 資料夾。

自訂工具組定義

當標準工具組無法滿足您的組建需求時,您可以建立自訂 Toolset。 例如,您可能有個組建置實驗室案例,必須使用個別的系統組建 C++ 專案。 使用自訂 Toolset,您就可以使用 /toolsVersion 命令列切換,在執行 MSBuild.exe 時將自訂值指派給 ToolsVersion 屬性。 如果您在專案檔中指定 ToolsVersion 屬性,則會忽略它。

透過這樣做,您也可以使用 $(MSBuildToolsPath) 屬性匯入該目錄的 .targets 檔案,以及定義您自己的自訂工具組屬性,這些屬性可用於使用該工具組的任何專案。

MSBuild.exe (如果使用 MSBuild 引擎,則為裝載 MSBuild 引擎的自訂工具) 的設定檔中指定自訂工具組。 例如,如果您想要定義名為 MyCustomToolset 的工具組,MSBuild.exe 的設定檔可以包含下列 Toolset 定義。

<msbuildToolsets default="MyCustomToolset">
   <toolset toolsVersion="MyCustomToolset">
      <property name="MSBuildToolsPath"
        value="C:\SpecialPath" />
   </toolset>
</msbuildToolsets>

也必須在組態檔中定義 <msbuildToolsets>,如下所示。

<configSections>
   <section name="msbuildToolsets"
       type="Microsoft.Build.BuildEngine.ToolsetConfigurationSection,
       Microsoft.Build, Version=15.1.0.0, Culture=neutral,
       PublicKeyToken=b03f5f7f11d50a3a">
   </section>
</configSections>

注意

為正確讀取,<configSections> 必須在 <configuration> 區段的第一個小節中。

ToolsetConfigurationSection 是可供任何 MSBuild 主機自訂組態使用的自訂組態區段。 如果使用自訂的工具組,主機除提供組態檔項目以外,不必執行任何作業來初始化組建引擎。

下列屬性專門針對專案中使用的 ToolsVersion 值:

  • $(MSBuildBinPath) 設定為 ToolsPath 值,是在登錄或定義 ToolsVersion 的組態檔中指定。 登錄或組態檔中的 $(MSBuildToolsPath) 設定會指定核心工作和目標的位置。 在專案檔中,這會對應至 $(MSBuildBinPath) 屬性,也會對應至 $(MSBuildToolsPath) 屬性。

  • $(MSBuildToolsPath) 是保留的屬性,由組態檔中指定的 MSBuildToolsPath 屬性提供。 (這個屬性會取代 $(MSBuildBinPath)。不過,為相容性之故會執行 $(MSBuildBinPath)。)自訂工具組必須定義 $(MSBuildToolsPath)$(MSBuildBinPath),但不能同時定義兩者,除非它們有相同的值。

    您也可以使用新增 MSBuildToolsPath 屬性時所用的相同語法,在組態檔中新增自訂的工具版本特定屬性。 為使專案檔能夠使用這些自訂屬性,請使用和組態檔指定的值名稱相同的名稱。 您可以在設定檔中定義工具組,但不能定義子工具組。