Přepsání nastavení parametru ToolsVersion
Můžete změnit sadu nástrojů pro projekty a řešení jedním ze tří způsobů:
při použití přepínače /ToolsVersion (nebo /tv pro krátké) při sestavení projektu nebo řešení z příkazového řádku
nastavením parametru ToolsVersion na úkolu MSBuild
nastavením vlastnosti $(ProjectToolsVersion) v projektu v rámci řešení.To umožňuje sestavení projektu v řešení s verzí sady nástrojů, která se liší od verze jiných projektů.
Přepsání nastavení ToolsVersion v projektech a řešeních při sestavení na příkazovém řádku
Ačkoli projekty aplikace Visual jsou obvykle sestavy pomocí aplikace ToolsVersion zadané v souboru projektu, můžete použít přepínač /ToolsVersion (nebo /tv) na příkazovém řádku k přepsání této hodnoty a sestavení všech projektů a jejich závislosti projektu na projektu s jinou sadou nástrojů.Příklad:
msbuild.exe someproj.proj /tv:12.0 /p:Configuration=Debug
V tomto příkladu jsou všechny projekty sestaveny pomocí ToolsVersion 12.0. (Vyhledejte však také informace v části "Pořadí priority" dále v tomto tématu.)
Při použití přepínače /tv na příkazovém řádku můžete volitelně použít vlastnost $(ProjectToolsVersion) v jednotlivých projektech k sestavení s jinou hodnotou ToolsVersion než ostatní projekty v řešení.
Přepsání nastavení ToolsVersion pomocí parametru ToolsVersion úlohy nástroje MSBuild
Úloha MSBuild představuje primární prostředek jednoho projektu pro sestavení dalšího.Chcete-li úloze MSBuild povolit sestavení projektu s jinými ToolsVersion, než je uvedeno v projektu, poskytuje volitelný parametr úlohy s názvem ToolsVersion.Následující příklad demonstruje, jak používat tento parametr:
Vytvořte soubor s názvem projectA.proj, který obsahuje následující kód:
<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0"> <Target Name="go" > <Message Text="projectA.proj" /> <Message Text="MSBuildToolsVersion: $(MSBuildToolsVersion)" /> <Message Text="MSBuildToolsPath: $(MSBuildToolsPath)" /> <MSBuild Projects="projectB.proj" ToolsVersion="2.0" Targets="go" /> </Target> </Project>
Vytvořte jiný soubor s názvem projectB.proj, který obsahuje následující kód:
<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0"> <Target Name="go"> <Message Text="projectB.proj" /> <Message Text="MSBuildToolsVersion: $(MSBuildToolsVersion)" /> <Message Text="MSBuildToolsPath: $(MSBuildToolsPath)" /> </Target> </Project>
Na příkazovém řádku zadejte následující příkaz:
msbuild projectA.proj /t:go /toolsversion:3.5
Zobrazí se následující výstup.Pro projectA nastavení /toolsversion:3.5 na příkazovém řádku přepíše nastavení ToolsVersion=12.0 ve značce Project.
ProjectB je volán úlohou v projectA.Tento úkol byl ToolsVersion=2.0, který přepíše další nastavení ToolsVersion pro projectB.
Output: projectA.proj MSBuildToolsVersion: 3.5 MSBuildToolsPath: C:\Windows\Microsoft.NET\Framework\v3.5 projectB.proj MSBuildToolsVersion: 2.0 MSBuildToolsPath: C:\Windows\Microsoft.NET\Framework\v2.0.50727
Pořadí priorit
Pořadí priorit od nejvyšší po nejnižší, které určuje ToolsVersion, je:
Atribut ToolsVersion úlohy MSBuild použité k sestavení projektu, pokud existuje.
Přepínač /toolsversion (nebo /tv), který se používá v příkazu msbuild.exe, pokud existuje.
Pokud proměnná prostředí MSBUILDTREATALLTOOLSVERSIONSASCURRENT je nastavena, pak použijte aktuální ToolsVersion.
Pokud proměnná prostředí MSBUILDTREATHIGHERTOOLSVERSIONASCURRENT je nastavena a ToolsVersion definované v souboru projektu je větší než aktuální soubor ToolsVersion, použijte aktuální ToolsVersion.
Pokud proměnná prostředí MSBUILDLEGACYDEFAULTTOOLSVERSION je nastavena nebo pokud ToolsVersion není nastavena, pak se použijí následující kroky:
Atribut ToolsVersion elementu Project souboru projektu.Pokud tento atribut neexistuje, předpokládá se aktuální verze.
Výchozí verze nástroje v souboru MSBuild.exe.config.
Výchozí verze nástroje v registru.Další informace naleznete v tématu Standardní a vlastní konfigurace sady nástrojů.
Pokud proměnná prostředí MSBUILDLEGACYDEFAULTTOOLSVERSION není nastavena, pak se použijí následující kroky:
Pokud proměnná prostředí MSBUILDDEFAULTTOOLSVERSION je nastavena na hodnotu ToolsVersion která existuje, použijte ji.
Pokud DefaultOverrideToolsVersion je nastaven v MSBuild.exe.config, použijte ho.
Pokud DefaultOverrideToolsVersion je nastaven v registru, použijte ho.
Jinak použijte aktuální ToolsVersion.
Viz také
Koncepty
Sada nástrojů MSBuild (atribut ToolsVersion)
Standardní a vlastní konfigurace sady nástrojů