Přepsání nastavení ToolsVersion
Atribut ToolsVersion
elementu Project v sadě Visual Studio a souborech 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ů.
Sadu nástrojů pro projekty a řešení můžete změnit jedním ze tří způsobů:
-ToolsVersion
Pomocí přepínače (nebo-tv
zkratky ) při sestavování projektu nebo řešení z příkazového řádku.Nastavením parametru
ToolsVersion
pro úlohu MSBuild.$(ProjectToolsVersion)
Nastavením vlastnosti projektu v rámci řešení. Díky tomu můžete vytvořit projekt v řešení s verzí Sady nástrojů, která se liší od ostatních projektů.
Přepsání nastavení ToolsVersion projektů a řešení v sestaveních příkazového řádku
Přestože projekty sady Visual Studio obvykle sestavují pomocí nástroje ToolsVersion zadané v souboru projektu, můžete pomocí -ToolsVersion
přepínače (nebo -tv
) na příkazovém řádku tuto hodnotu přepsat a sestavit všechny projekty a jejich závislosti mezi projekty 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. (Viz část Pořadí priorit dále v tomto tématu.)
Při použití -tv
přepínače na příkazovém řádku můžete volitelně použít $(ProjectToolsVersion)
vlastnost v jednotlivých projektech k jejich sestavení s jinou hodnotou ToolsVersion než ostatní projekty v řešení.
Přepsání nastavení ToolsVersion pomocí parametru ToolsVersion úlohy MSBuild
Úloha MSBuild je primárním prostředkem pro sestavení jednoho projektu. Chcete-li povolit msBuild úkol sestavit projekt s jiným ToolsVersion než ten zadaný v projektu, poskytuje volitelný parametr úkolu s názvem ToolsVersion
. Následující příklad ukazuje použití tohoto parametru:
Vytvořte soubor s názvem projectA.proj a obsahující následující kód:
<Project xmlns="http://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 další soubor s názvem projectB.proj a obsahující následující kód:
<Project xmlns="http://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. Nastavení
projectA
na příkazovém řádku přepíšeToolsVersion=12.0
nastavení ve značceProject
.-toolsversion:3.5
ProjectB
je volána úkolem vprojectA
. Tento úkol máToolsVersion=2.0
, který přepíše ostatníToolsVersion
nastavení proprojectB
.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ššího po nejnižší, které slouží k určení ToolsVersion
:
Atribut
ToolsVersion
úlohy MSBuild použité k sestavení projektu, pokud existuje.Přepínač
-toolsversion
(nebo-tv
) použitý v příkazu msbuild.exe, pokud existuje.Pokud je proměnná
MSBUILDTREATALLTOOLSVERSIONSASCURRENT
prostředí nastavená, použijte aktuálníToolsVersion
.Pokud je proměnná
MSBUILDTREATHIGHERTOOLSVERSIONASCURRENT
prostředí nastavená a definovanáToolsVersion
v souboru projektu je větší než aktuálníToolsVersion
, použijte aktuálníToolsVersion
.Pokud je proměnná
MSBUILDLEGACYDEFAULTTOOLSVERSION
prostředí nastavená nebo pokudToolsVersion
není nastavená, použijí se následující kroky:Atribut
ToolsVersion
elementu Project souboru projektu. Pokud tento atribut neexistuje, předpokládá se, že se jedná o aktuální verzi.Výchozí verze nástrojů v souboru MSBuild.exe.config .
Výchozí verze nástrojů v registru. Další informace naleznete v tématu Standardní a vlastní konfigurace sady nástrojů.
Pokud proměnná
MSBUILDLEGACYDEFAULTTOOLSVERSION
prostředí není nastavená, použijí se následující kroky:Pokud je proměnná
MSBUILDDEFAULTTOOLSVERSION
prostředí nastavená naToolsVersion
existující, použijte ji.Pokud
DefaultOverrideToolsVersion
je nastavena v MSBuild.exe.config, použijte ji.Pokud
DefaultOverrideToolsVersion
je nastavená v registru, použijte ji.V opačném případě použijte aktuální
ToolsVersion
.