Sada nástrojů MSBuild (atribut ToolsVersion)
Sada nástrojů MSBuild obsahuje soubor microsoft.common.tasks , soubor microsoft.common.targets a kompilátory, jako jsou csc.exe a vbc.exe. Většinu sad nástrojů lze použít ke kompilaci aplikací do více než jedné verze rozhraní .NET Framework a více než jedné systémové platformy. Sadu nástrojů MSBuild 2.0 však lze použít k cílení pouze na rozhraní .NET Framework 2.0.
Atribut MSBuild ToolsVersion
pro element Projektu v sadě Visual Studio a soubory projektu MSBuild je považován za zastaralý v sadě Visual Studio 2019 a novější; můžete jej bezpečně odstranit. Tento článek popisuje jeho použití ve starších verzích nástroje MSBuild nebo pro vlastní sady nástrojů. Viz standardní a vlastní konfigurace sady nástrojů.
Atribut ToolsVersion
Zadejte sadu nástrojů v ToolsVersion
atributu elementu Project v souboru projektu. Následující příklad určuje, že projekt by měl být sestaven pomocí msBuild "Current" Toolset.
<Project ToolsVersion="Current" ... </Project>
Poznámka:
Některé typy projektů používají sdk
atribut místo ToolsVersion
. Další informace naleznete v tématu Přidání do formátu csproj pro .NET Core.
Jak funguje atribut ToolsVersion
Když vytvoříte projekt v sadě Visual Studio nebo upgradujete existující projekt, atribut s názvem ToolsVersion
se automaticky zahrne do souboru projektu a jeho hodnota odpovídá verzi nástroje MSBuild, která je součástí edice sady Visual Studio. Další informace naleznete v tématu Přehled cílení architektury.
ToolsVersion
Pokud je hodnota definována v souboru projektu, nástroj MSBuild použije tuto hodnotu k určení hodnot vlastností sady nástrojů, které jsou k dispozici pro projekt. Jedna vlastnost Sady nástrojů je $(MSBuildToolsPath)
, která určuje cestu k nástrojům rozhraní .NET Framework. Vyžaduje se pouze vlastnost Sady nástrojů (nebo $(MSBuildBinPath)
).
Od sady Visual Studio 2013 je verze sady nástrojů MSBuild stejná jako číslo verze sady Visual Studio. Nástroj MSBuild se ve výchozím nastavení nastaví na tuto sadu nástrojů v sadě Visual Studio a na příkazovém řádku bez ohledu na verzi sady nástrojů zadanou v souboru projektu. Toto chování lze přepsat pomocí příznaku -ToolsVersion. Další informace naleznete v tématu Přepsání nastavení ToolsVersion.
V následujícím příkladu nástroj MSBuild najde soubor Microsoft.CSharp.targets pomocí MSBuildToolsPath
rezervované vlastnosti.
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
Hodnotu MSBuildToolsPath
můžete upravit definováním vlastní sady nástrojů. Další informace naleznete v tématu Standardní a vlastní konfigurace sady nástrojů.
Když vytvoříte řešení na příkazovém řádku a zadáte ToolsVersion
pro msbuild.exe, všechny projekty a jejich závislosti mezi projekty jsou sestaveny podle toho , i ToolsVersion
když každý projekt v řešení určuje vlastní ToolsVersion
. Pokud chcete definovat ToolsVersion
hodnotu pro jednotlivé projekty, přečtěte si téma Přepsání nastavení ToolsVersion.
Atribut ToolsVersion
se používá také pro migraci projektu. Pokud například otevřete projekt sady Visual Studio 2008 v sadě Visual Studio 2010, soubor projektu se aktualizuje tak, aby zahrnoval ToolsVersion="4.0". Pokud se pak pokusíte tento projekt otevřít v sadě Visual Studio 2008, nerozpozná upgradovaný ToolsVersion
projekt, a proto projekt sestaví, jako by byl atribut stále nastavený na verzi 3.5.
Visual Studio 2010 a Visual Studio 2012 používají ToolsVersion verze 4.0. Visual Studio 2013 používá ToolsVersion verze 12.0. Visual Studio 2015 používá ToolsVersion 14.0 a Visual Studio 2017 používá ToolsVersion 15.0. V mnohapřípadechch Visual Studio vždy používá správnou sadu nástrojů, ale budete upozorněni, pokud použitá verze neodpovídá verzi v souboru projektu. Ve většině případů je toto upozornění neškodné, protože sady nástrojů jsou ve většině případů kompatibilní.
Dílčí sady nástrojů, které jsou popsány dále v tomto tématu, umožňují nástroji MSBuild automaticky přepínat sadu nástrojů, které se mají použít na základě kontextu, ve kterém se sestavení spouští. Nástroj MSBuild například používá novější sadu nástrojů při spuštění v sadě Visual Studio 2012, než když je spuštěna v sadě Visual Studio 2010, aniž byste museli explicitně změnit soubor projektu.
Implementace sady nástrojů
Implementujte sadu nástrojů výběrem cest různých nástrojů, cílů a úloh, které tvoří sadu nástrojů. Nástroje v sadě nástrojů, které nástroj MSBuild definuje, pocházejí z následujících zdrojů:
Složka .NET Framework.
Další spravované nástroje
Spravované nástroje zahrnují ResGen.exe a TlbImp.exe.
Nástroj MSBuild nabízí dva způsoby přístupu ke sadě nástrojů:
Pomocí vlastností sady nástrojů
Pomocí ToolLocationHelper metod
Vlastnosti sady nástrojů určují cesty nástrojů. Počínaje sadou Visual Studio 2017 už nástroj MSBuild nemá pevné umístění. Ve výchozím nastavení se nachází ve složce MSBuild\15.0\Bin vzhledem k umístění instalace sady Visual Studio. V dřívějších verzích nástroj MSBuild používá hodnotu ToolsVersion
atributu v souboru projektu k vyhledání odpovídajícího klíče registru a poté použije informace v klíči registru k nastavení vlastností sady nástrojů. Pokud má například ToolsVersion
hodnotu 12.0
, nástroj MSBuild nastaví vlastnosti sady nástrojů podle tohoto klíče registru: HKLM\Software\Microsoft\MSBuild\ToolsVersions\12.0.
Toto jsou vlastnosti sady nástrojů:
MSBuildToolsPath
určuje cestu binárních souborů MSBuild.SDK40ToolsPath
určuje cestu dalších spravovaných nástrojů pro MSBuild 4.x (což může být 4.0 nebo 4.5).SDK35ToolsPath
určuje cestu dalších spravovaných nástrojů pro MSBuild 3.5.
Sadu nástrojů můžete také určit programově voláním metod ToolLocationHelper třídy. Třída obsahuje tyto metody:
GetPathToDotNetFramework vrátí cestu ke složce rozhraní .NET Framework.
GetPathToDotNetFrameworkFile vrátí cestu k souboru ve složce rozhraní .NET Framework.
GetPathToDotNetFrameworkSdk vrátí cestu ke složce spravovaných nástrojů.
GetPathToDotNetFrameworkSdkFile vrátí cestu k souboru, který se obvykle nachází ve složce spravovaných nástrojů.
GetPathToBuildTools vrátí cestu k nástrojům sestavení.