Tworzenie niestandardowej konfiguracji zestawu narzędzi

Zestaw narzędzi MSBuild zawiera odwołania do zadań, obiektów docelowych i narzędzi, których można użyć do kompilowania projektu aplikacji. Program MSBuild zawiera standardowy zestaw narzędzi, ale można również tworzyć niestandardowe zestawy narzędzi.

Standardowe konfiguracje zestawu narzędzi

Program MSBuild zawiera standardowy zestaw Current narzędzi odwołujący się do bieżącej wersji programu MSBuild, który jest zainstalowany w folderze MSBuild\Current\Bin w katalogu instalacyjnym programu Visual Studio.

Niestandardowe definicje zestawu narzędzi

Jeśli standardowy zestaw narzędzi nie spełnia wymagań dotyczących kompilacji, możesz utworzyć niestandardowy Toolsetzestaw narzędzi . Na przykład może istnieć scenariusz laboratorium kompilacji, w którym musisz mieć oddzielny system do kompilowania projektów C++. Za pomocą niestandardowego Toolsetelementu można przypisać wartości niestandardowe do atrybutu ToolsVersion podczas uruchamiania pliku MSBuild.exe przy użyciu przełącznika /toolsVersion wiersza polecenia. Jeśli określisz ToolsVersion atrybut w pliku projektu, zostanie on zignorowany.

W tym celu można również użyć $(MSBuildToolsPath) właściwości , aby zaimportować pliki targets z tego katalogu, a także zdefiniować własne niestandardowe właściwości zestawu narzędzi, które mogą być używane dla dowolnego projektu korzystającego z tego zestawu narzędzi.

Określ niestandardowy zestaw narzędzi w pliku konfiguracji msBuild.exe (lub dla niestandardowego narzędzia hostującego aparat MSBuild, jeśli jest to używane). Na przykład plik konfiguracji msBuild.exe może zawierać następującą Toolset definicję, jeśli chcesz zdefiniować zestaw narzędzi o nazwie MyCustomToolset.

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

<msbuildToolsets> należy również zdefiniować w pliku konfiguracji w następujący sposób.

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

Uwaga

Aby można było poprawnie odczytać, <configSections> musi być pierwszą podsekcją <configuration> w sekcji .

ToolsetConfigurationSection to sekcja konfiguracji niestandardowej, która może być używana przez dowolnego hosta MSBuild na potrzeby konfiguracji niestandardowej. Jeśli używasz niestandardowego zestawu narzędzi, host nie musi wykonywać żadnych czynności w celu zainicjowania aparatu kompilacji, z wyjątkiem udostępniania wpisów pliku konfiguracji.

Następujące właściwości są specyficzne dla wartości używanej ToolsVersion w projektach:

  • Parametr $(MSBuildBinPath) jest ustawiony na ToolsPath wartość określoną w rejestrze lub w pliku konfiguracji, w którym zdefiniowano ToolsVersion wartość . Ustawienie $(MSBuildToolsPath) w rejestrze lub pliku konfiguracji określa lokalizację podstawowych zadań i obiektów docelowych. W pliku projektu ta właściwość mapuje na właściwość $(MSBuildBinPath), a także na właściwość $(MSBuildToolsPath).

  • $(MSBuildToolsPath) jest właściwością zarezerwowaną dostarczaną przez właściwość MSBuildToolsPath określoną w pliku konfiguracji. (Ta właściwość zastępuje $(MSBuildBinPath)element . $(MSBuildBinPath) Jednak jest przenoszona w celu zachowania zgodności). Niestandardowy zestaw narzędzi musi definiować oba $(MSBuildToolsPath) zestawy narzędzi, $(MSBuildBinPath) ale nie oba, chyba że obie mają tę samą wartość.

    Do pliku konfiguracji można również dodawać niestandardowe właściwości specyficzne dla elementu ToolsVersion przy użyciu tej samej składni, która służy do dodawania właściwości MSBuildToolsPath. Aby udostępnić te właściwości niestandardowe do pliku projektu, użyj tej samej nazwy co nazwa wartości określonej w pliku konfiguracji. Zestawy narzędzi można zdefiniować, ale nie zestawy narzędzi podrzędnych w pliku konfiguracji.