Sdílet prostřednictvím


Přepsání nastavení parametru ToolsVersion

Můžete změnit sadu nástrojů pro projekty a řešení jedním ze tří způsobů:

  1. 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

  2. nastavením parametru ToolsVersion na úkolu MSBuild

  3. 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:

  1. 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>
    
  2. 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>
    
  3. Na příkazovém řádku zadejte následující příkaz:

    msbuild projectA.proj /t:go /toolsversion:3.5
    
  4. 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:

  1. Atribut ToolsVersion úlohy MSBuild použité k sestavení projektu, pokud existuje.

  2. Přepínač /toolsversion (nebo /tv), který se používá v příkazu msbuild.exe, pokud existuje.

  3. Pokud proměnná prostředí MSBUILDTREATALLTOOLSVERSIONSASCURRENT je nastavena, pak použijte aktuální ToolsVersion.

  4. 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.

  5. Pokud proměnná prostředí MSBUILDLEGACYDEFAULTTOOLSVERSION je nastavena nebo pokud ToolsVersion není nastavena, pak se použijí následující kroky:

    1. Atribut ToolsVersion elementu Project souboru projektu.Pokud tento atribut neexistuje, předpokládá se aktuální verze.

    2. Výchozí verze nástroje v souboru MSBuild.exe.config.

    3. Výchozí verze nástroje v registru.Další informace naleznete v tématu Standardní a vlastní konfigurace sady nástrojů.

  6. Pokud proměnná prostředí MSBUILDLEGACYDEFAULTTOOLSVERSION není nastavena, pak se použijí následující kroky:

    1. Pokud proměnná prostředí MSBUILDDEFAULTTOOLSVERSION je nastavena na hodnotu ToolsVersion která existuje, použijte ji.

    2. Pokud DefaultOverrideToolsVersion je nastaven v MSBuild.exe.config, použijte ho.

    3. Pokud DefaultOverrideToolsVersion je nastaven v registru, použijte ho.

    4. Jinak použijte aktuální ToolsVersion.

Viz také

Koncepty

Sada nástrojů MSBuild (atribut ToolsVersion)

Standardní a vlastní konfigurace sady nástrojů

Další zdroje

Přehled cílení na více verzí nástroje MSBuild

Koncepty nástroje MSBuild