global.json – přehled

Tento článek se vztahuje na: ✔️ .NET Core 3.1 SDK a novější verze

Soubor global.json umožňuje definovat, která verze sady .NET SDK se používá při spouštění příkazů .NET CLI. Výběr verze sady .NET SDK je nezávislý na určení verze modulu runtime cílového projektu. Verze sady .NET SDK označuje, která verze rozhraní .NET CLI se používá. Tento článek vysvětluje, jak vybrat verzi sady SDK pomocí souboru global.json.

Pokud chcete vždy používat nejnovější verzi sady SDK nainstalovanou na vašem počítači, není potřeba žádný soubor global.json . Ve scénářích CI (kontinuální integrace) ale obvykle chcete zadat přijatelný rozsah pro používanou verzi sady SDK. Soubor global.jsonrollForward funkci, která poskytuje flexibilní způsoby určení přijatelného rozsahu verzí. Například následující soubor global.json vybere 6.0.300 nebo jakýkoli novější pás funkcí nebo opravu pro verzi 6.0, která je nainstalovaná na počítači:

{
  "sdk": {
    "version": "6.0.300",
    "rollForward": "latestFeature"
  }
}

Sada .NET SDK hledá soubor global.json v aktuálním pracovním adresáři (který nemusí být nutně stejný jako adresář projektu) nebo jeden z nadřazených adresářů.

Informace o určení verze modulu runtime místo verze sady SDK naleznete v tématu Cílové architektury.

Schéma global.json

SDK

Typ: object

Určuje informace o sadě .NET SDK, které chcete vybrat.

verze

  • Typ: string

Verze sady .NET SDK, která se má použít.

Toto pole:

  • Nemá podporu zástupných znaků; to znamená, že musíte zadat celé číslo verze.
  • Nepodporuje rozsahy verzí.

allowPrerelease

  • Typ: boolean
  • K dispozici od: .NET Core 3.0 SDK.

Označuje, jestli má překladač sady SDK při výběru verze sady SDK, která se má použít, zvážit předběžné verze.

Pokud tuto hodnotu explicitně nenastavíte, výchozí hodnota závisí na tom, jestli používáte Visual Studio:

  • Pokud nejste v Visual Studio, výchozí hodnota je true.
  • Pokud jste v Visual Studio, použije se požadovaný stav předběžné verze. To znamená, že pokud používáte verzi Preview Visual Studio nebo nastavíte náhledy možnosti .NET SDK (v části ToolsOptionsEnvironmentPreview>>>Features), výchozí hodnota je true. V opačném případě je falsevýchozí hodnota .

rollForward

  • Typ: string
  • K dispozici od: .NET Core 3.0 SDK.

Zásady uvedení, které se mají použít při výběru verze sady SDK, buď jako záložní, pokud chybí konkrétní verze sady SDK, nebo jako direktiva pro použití vyšší verze. Pokud ji nenastavíte na latestMajorhodnotu, musí být zadánarollForward verze s hodnotou . Výchozí chování při předávání je určeno odpovídajícími pravidly.

Pokud chcete porozumět dostupným zásadám a jejich chování, zvažte následující definice verze sady SDK ve formátu x.y.znn:

  • x je hlavní verze.
  • y je podverze.
  • z je kapelou funkcí.
  • nn je verze opravy.

V následující tabulce jsou uvedeny možné hodnoty klíče rollForward :

Hodnota Chování
patch Používá zadanou verzi.
Pokud ho nenajdete, přepošli se na nejnovější úroveň oprav.
Pokud ho nenajdete, selže.

Tato hodnota je starší verze chování ze starších verzí sady SDK.
feature Používá nejnovější úroveň oprav pro zadaný hlavní, vedlejší a funkční pás.
Pokud ho nenajdete, přepošlete ho do dalšího vyššího pásma funkcí v rámci stejného hlavního nebo menšího rozsahu a použijete pro tento pás funkcí nejnovější úroveň oprav.
Pokud ho nenajdete, selže.
minor Používá nejnovější úroveň oprav pro zadaný hlavní, vedlejší a funkční pás.
Pokud ho nenajdete, přepošlete se do dalšího vyššího pásma funkcí ve stejné hlavní/podverze a použijete pro tuto skupinu funkcí nejnovější úroveň oprav.
Pokud ho nenajdete, přepošlete ho do dalšího vyššího podverze a pásu funkcí ve stejném hlavním rozsahu a použijete nejnovější úroveň oprav pro tuto skupinu funkcí.
Pokud ho nenajdete, selže.
major Používá nejnovější úroveň oprav pro zadaný hlavní, vedlejší a funkční pás.
Pokud ho nenajdete, přepošlete se do dalšího vyššího pásma funkcí ve stejné hlavní/podverze a použijete pro tuto skupinu funkcí nejnovější úroveň oprav.
Pokud ho nenajdete, přepošlete ho do dalšího vyššího podverze a pásu funkcí ve stejném hlavním rozsahu a použijete nejnovější úroveň oprav pro tuto skupinu funkcí.
Pokud ho nenajdete, vrátí se k dalšímu vyššímu hlavnímu, vedlejšímu a funkčnímu pásmu a použije pro tento pás funkcí nejnovější úroveň oprav.
Pokud ho nenajdete, selže.
latestPatch Používá nejnovější nainstalovanou úroveň oprav, která odpovídá požadovanému hlavnímu, vedlejšímu a funkčnímu pásmu s úrovní oprav, která je větší nebo rovna zadané hodnotě.
Pokud ho nenajdete, selže.
latestFeature Používá nejvyšší nainstalovanou úroveň pásem funkcí a úrovní oprav, která odpovídá požadovanému hlavnímu a vedlejšímu prvku s pásem funkcí a úrovní oprav, která je větší nebo rovna zadané hodnotě.
Pokud ho nenajdete, selže.
latestMinor Používá nejvyšší nainstalovanou úroveň podverze, pásu funkcí a opravy, která odpovídá požadovanému hlavnímu objektu s podverzi, pásem funkcí a úrovní oprav, která je větší nebo rovna zadané hodnotě.
Pokud ho nenajdete, selže.
latestMajor Používá nejvyšší nainstalovanou sadu .NET SDK s verzí, která je větší nebo rovna zadané hodnotě.
Pokud ho nenajdete, selžou.
disable Nevrátí se dopředu. Vyžaduje se přesná shoda.

msbuild-sdks

Typ: object

Umožňuje řídit verzi sady SDK projektu na jednom místě místo v jednotlivých projektech. Další informace najdete v tématu Řešení sad SDK projektu.

Příklady

Následující příklad ukazuje, jak používat předběžné verze:

{
  "sdk": {
    "allowPrerelease": false
  }
}

Následující příklad ukazuje, jak použít nejvyšší nainstalovanou verzi, která je větší nebo rovna zadané verzi. Zobrazený kód JSON zakáže jakoukoli verzi sady SDK starší než 2.2.200 a povolí verzi 2.2.200 nebo jakoukoli novější, včetně 3.0.xxx a 3.1.xxx.

{
  "sdk": {
    "version": "2.2.200",
    "rollForward": "latestMajor"
  }
}

Následující příklad ukazuje, jak použít přesnou zadanou verzi:

{
  "sdk": {
    "version": "3.1.100",
    "rollForward": "disable"
  }
}

Následující příklad ukazuje, jak používat nejnovější verzi pásem funkcí a verzí oprav nainstalovanou pro konkrétní hlavní a podverzi. Zobrazený kód JSON zakáže jakoukoli verzi sady SDK starší než 3.1.102 a povolí verzi 3.1.102 nebo novější 3.1.xxx, například 3.1.103 nebo 3.1.200.

{
  "sdk": {
    "version": "3.1.102",
    "rollForward": "latestFeature"
  }
}

Následující příklad ukazuje, jak použít nejvyšší verzi opravy nainstalovanou pro konkrétní verzi. Zobrazený kód JSON zakáže jakoukoli verzi sady SDK starší než 3.1.102 a povolí verzi 3.1.102 nebo novější verze 3.1.1xx, například 3.1.103 nebo 3.1.199.

{
  "sdk": {
    "version": "3.1.102",
    "rollForward": "latestPatch"
  }
}

global.json a .NET CLI

Pokud chcete nastavit verzi sady SDK v souboru global.json , je užitečné vědět, které verze sady SDK jsou nainstalované na vašem počítači. Informace o tom, jak to provést, najdete v tématu Jak zkontrolovat, zda je rozhraní .NET již nainstalované.

Pokud chcete na počítač nainstalovat další verze sady .NET SDK, přejděte na stránku Stáhnout .NET .

V aktuálním adresáři můžete vytvořit nový soubor global.json spuštěním nového příkazu dotnet , podobně jako v následujícím příkladu:

dotnet new globaljson --sdk-version 6.0.100

Odpovídající pravidla

Poznámka

Odpovídající pravidla se řídí vstupním dotnet.exe bodem, který je společný pro všechny nainstalované moduly runtime nainstalované v .NET. Odpovídající pravidla pro nejnovější nainstalovanou verzi modulu runtime .NET se používají, pokud máte současně nainstalovaných více modulů runtime nebo pokud používáte soubor global.json .

Při určování verze sady SDK, která se má použít, platí následující pravidla:

  • Pokud se nenajde žádný soubor global.json nebo global.json nezadá verzi sady SDK ani allowPrerelease hodnotu, použije se nejvyšší nainstalovaná verze sady SDK (ekvivalentní nastavení rollForwardlatestMajor). To, jestli se zvažují předběžné verze sady SDK, závisí na tom, jak dotnet se vyvolává.

    • Pokud nejste v Visual Studio, zvažte předběžné verze.
    • Pokud jste v Visual Studio, použije se požadovaný stav předběžné verze. To znamená, že pokud používáte verzi Preview Visual Studio nebo nastavíte náhledy možnosti Použít sadu .NET SDK (v části ToolsOptionsEnvironmentPreview>>>Features), považují se předběžné verze za předběžné verze. V opačném případě se považují pouze verze vydané verze.
  • Pokud se najde soubor global.json , který nezadá verzi sady SDK, ale určuje allowPrerelease hodnotu, použije se nejvyšší nainstalovaná verze sady SDK (ekvivalentní nastavení rollForwardlatestMajor). To, jestli může být nejnovější verze sady SDK vydaná nebo předběžná verze, závisí na hodnotě allowPrerelease. true označuje, že se považují předběžné verze; false značí, že se považují pouze verze vydané verze.

  • Pokud se najde soubor global.json a určuje verzi sady SDK:

    • Pokud není nastavená žádná rollForward hodnota, použije latestPatch se jako výchozí rollForward zásada. V opačném případě zkontrolujte jednotlivé hodnoty a jejich chování v části RollForward .
    • Jestli se předběžné verze považují za výchozí a jaké je výchozí chování, pokud allowPrerelease není nastavená, je popsáno v části allowPrerelease .

Řešení potíží s upozorněními sestavení

  • Následující upozornění ukazují, že váš projekt byl zkompilován pomocí předběžné verze sady .NET SDK:

    Pracujete s verzí Preview sady .NET Core SDK. Verzi sady SDK můžete definovat prostřednictvím souboru global.json v aktuálním projektu. Více na adrese https://go.microsoft.com/fwlink/?linkid=869452.

    Používáte verzi Preview rozhraní .NET. Viz: https://aka.ms/dotnet-core-preview

    Verze sady .NET SDK mají historii a závazek vysoké kvality. Pokud ale nechcete používat předběžnou verzi, zkontrolujte různé strategie, které můžete použít v části allowPrerelease . Pro počítače, které nikdy neměly nainstalovaný modul runtime nebo sadu SDK .NET Core 3.0 nebo vyšší, musíte vytvořit soubor global.json a zadat přesnou verzi, kterou chcete použít.

  • Následující upozornění značí, že váš projekt cílí na EF Core 1.0 nebo 1.1, který není kompatibilní se sadou .NET Core 2.1 SDK a novějšími verzemi:

    Projekt po spuštění {startupProject} cílí na architekturu . NETCoreApp verze {targetFrameworkVersion}. Tato verze nástrojů příkazového řádku Entity Framework Core .NET podporuje pouze verzi 2.0 nebo vyšší. Informace o používání starších verzí nástrojů naleznete v tématu https://go.microsoft.com/fwlink/?linkid=871254.

    Počínaje sadou .NET Core 2.1 SDK (verze 2.1.300) dotnet ef je příkaz součástí sady SDK. Pokud chcete projekt zkompilovat, nainstalujte na počítač sadu .NET Core 2.0 SDK (verze 2.1.201) nebo starší a definujte požadovanou verzi sady SDK pomocí souboru global.json . Další informace o příkazu najdete v tématu Nástroje příkazového dotnet efřádku EF Core .NET.

Viz také