Vyberte verzi .NET, která se má použít.

Tento článek vysvětluje zásady používané nástroji , sadou SDK a runtime platformy .NET pro výběr verzí. Tyto zásady poskytují rovnováhu mezi spouštěním aplikací pomocí určených verzí a umožnění snadného upgradu počítačů vývojářů i koncových uživatelů. Tyto zásady umožňují:

  • Snadné a efektivní nasazení .NET, včetně aktualizací zabezpečení a spolehlivosti.
  • Používejte nejnovější nástroje a příkazy nezávislé na cílovém modulu runtime.

Dojde k výběru verze:

Zbývající část tohoto dokumentu se těmito čtyřmi scénáři zabývá.

Sada SDK používá nejnovější nainstalovanou verzi.

Příkazy sady SDK zahrnují a dotnet newdotnet run. Rozhraní příkazového řádku .NET musí pro každý příkaz zvolit verzi dotnet sady SDK. Ve výchozím nastavení používá nejnovější sadu SDK nainstalovanou na počítači, i když:

  • Projekt cílí na starší verzi modulu runtime .NET.
  • Nejnovější verze sady .NET SDK je ve verzi Preview.

Při cílení na starší verze modulu runtime .NET můžete využít nejnovější funkce a vylepšení sady SDK. Pomocí stejných nástrojů sady SDK můžete cílit na různé verze modulu runtime .NET.

Ve výjimečných případech možná budete muset použít starší verzi sady SDK. Tuto verzi zadáte v souboru global.json. Zásada "použít nejnovější" znamená, že k určení verze sady .NET SDK, která je starší než nejnovější nainstalovaná verze, použijete jenom global.json .

Global.json můžete umístit kamkoli do hierarchie souborů. Rozhraní příkazového řádku vyhledá v adresáři projektu nahoru první soubor global.json, který najde. Řídíte, na které projekty se daný soubor global.json vztahuje, podle jeho místa v systému souborů. Rozhraní příkazového řádku .NET vyhledá soubor global.json iterativně v cestě směrem nahoru od aktuálního pracovního adresáře. První nalezený soubor global.json určuje použitou verzi. Pokud je nainstalovaná tato verze sady SDK, použije se tato verze. Pokud sada SDK zadaná v souboru global.json není nalezena, rozhraní příkazového řádku .NET použije odpovídající pravidla k výběru kompatibilní sady SDK nebo selže, pokud se žádná nenašla.

Následující příklad ukazuje syntaxi global.json :

{
  "sdk": {
    "version": "5.0.0"
  }
}

Postup výběru verze sady SDK je následující:

  1. dotnet vyhledá soubor dotnet iterativně zpětně a přecháduje cestu směrem nahoru od aktuálního pracovního adresáře.
  2. dotnet používá sadu SDK zadanou v prvním dotnet .
  3. dotnet pokud se soubor dotnet nenašel, použije nejnovější nainstalovanou sadu SDK.

Další informace o výběru verze sady SDK najdete v částech Pravidla porovnávání a rollForward článku přehledu global.json .

Monikery cílové architektury definují rozhraní API pro čas sestavení

Projekt sestavíte s rozhraními API definovanými v monikeru cílového rozhraní (TFM). Cílovou rozhraní zadáte v souboru projektu. Nastavte TargetFramework element v souboru projektu, jak je znázorněno v následujícím příkladu:

<TargetFramework>net5.0</TargetFramework>

Projekt můžete sestavit s několika TFM. Nastavení více cílových architektur je pro knihovny častější, ale lze to provést i s aplikacemi. Zadáte vlastnost TargetFrameworks (v množném čísle TargetFramework). Cílové architektury jsou středníkem oddělené, jak je znázorněno v následujícím příkladu:

<TargetFrameworks>net5.0;netcoreapp3.1;net47</TargetFrameworks>

Danou sadu SDK podporuje pevnou sadu rozhraní, která je říznutá na cílovou rozhraní modulu runtime, se který dodává. Například sada .NET 5 SDK obsahuje modul runtime .NET 5, což je implementace cílové net5.0 architektury. Sada .NET 5 SDK podporuje netcoreapp2.0, netcoreapp2.1, netcoreapp3.0atd., ale ne net6.0 (nebo vyšší). Nainstalujte sadu .NET 6 SDK pro sestavení pro net6.0.

.NET Standard

.NET Standard byl způsob, jak cílit na plochu rozhraní API sdílenou různými implementacemi .NET. Počínaje verzí .NET 5, což je samotný standard rozhraní API, má .NET Standard jen malý význam s výjimkou jednoho scénáře: .NET Standard je užitečný, když chcete cílit na .NET i .NET Framework. .NET 5 implementuje všechny .NET Standard verze.

Další informace najdete v tématu .NET 5 a .NET Standard.

Přechod k aplikacím závislým na rozhraní

Když spustíte aplikaci ze dotnet runzdroje pomocí , dotnet runz nasazení závislého na rozhraní s nebo ze spustitelného souboru závislého na rozhraní s , je spustitelný soubor hostitelem aplikace.

Hostitel zvolí nejnovější verzi opravy nainstalovanou na počítači. Pokud jste například zadali net5.0 v souboru 5.0.2 projektu a je nainstalovaný nejnovější modul runtime .NET, 5.0.2 použije se modul runtime .

Pokud není nalezena 5.0.* žádná přijatelná verze, použije se 5.* nová verze. Pokud jste například zadali a net5.0 nainstalujete 5.1.0 pouze , aplikace se spustí pomocí modulu 5.1.0 runtime. Toto chování se označuje jako "přeposlání podverd". Nižší verze se také nebudou zvažovat. Pokud není nainstalovaný žádný přijatelný modul runtime, aplikace se nespouště.

Toto chování ukazuje několik příkladů použití, pokud cílíte na 5.0:

  • ✔️ Je zadána hodnota 5.0. 5.0.3 je nejvyšší nainstalovaná verze opravy. Použije se 5.0.3.
  • ❌ Je zadána hodnota 5.0. Nejsou nainstalované žádné verze 5.0.*. 3.1.1 je nejvyšší nainstalovaný modul runtime. Zobrazí se chybová zpráva.
  • ✔️ Je zadána hodnota 5.0. Nejsou nainstalované žádné verze 5.0.*. 5.1.0 je nainstalovaná nejvyšší verze modulu runtime. Použije se 5.1.0.
  • ❌ Je zadána hodnota 3.0. Nejsou nainstalované žádné verze 3.x. 5.0.0 je nejvyšší nainstalovaný modul runtime. Zobrazí se chybová zpráva.

Přeposílání podverd má jeden vedlejší efekt, který může mít vliv na koncové uživatele. Představte si následující scénář:

  1. Aplikace určuje, že se vyžaduje 5.0.
  2. Při spuštění není nainstalovaná verze 5.0.*, ale verze 5.1.0 je. Použije se verze 5.1.0.
  3. Později uživatel nainstaluje 5.0.3 a spustí aplikaci znovu, teď se použije verze 5.0.3.

Je možné, že se 5.0.3 a 5.1.0 chovají odlišně, zejména ve scénářích, jako je serializace binárních dat.

Řízení chování při přeposílání

Chování aplikace při přeposílání lze nakonfigurovat čtyřmi různými způsoby:

  1. Project na úrovni systému nastavením vlastnosti<RollForward>:

    <PropertyGroup>
      <RollForward>LatestMinor</RollForward>
    </PropertyGroup>
    
  2. Soubor *.runtimeconfig.json .

    Tento soubor se vyprodukuje při kompilaci aplikace. Pokud byla <RollForward> vlastnost nastavena v projektu, reprodukuje *.runtimeconfig.json se v souboru jako rollForward nastavení. Uživatelé mohou tento soubor upravit a změnit chování aplikace.

    {
      "runtimeOptions": {
        "tfm": "net5.0",
        "rollForward": "LatestMinor",
        "framework": {
          "name": "Microsoft.NETCore.App",
          "version": "5.0.0"
        }
      }
    }
    
  3. --roll-forward <value> Vlastnost dotnet příkazu

    Když spustíte aplikaci, můžete chování při přeposílání řídit prostřednictvím příkazového řádku:

    dotnet run --roll-forward LatestMinor
    dotnet myapp.dll --roll-forward LatestMinor
    myapp.exe --roll-forward LatestMinor
    
  4. Proměnná DOTNET_ROLL_FORWARD prostředí.

Priorita

Chování dopředu se při spuštění aplikace nastavuje v následujícím pořadí. Vyšší číslování položek má přednost před nižšími číslováními položek:

  1. Nejprve se *.runtimeconfig.json vyhodnotí konfigurační soubor.
  2. Dále se zvažuje DOTNET_ROLL_FORWARD proměnná prostředí, která přepíše předchozí kontrolu.
  3. Nakonec všechny parametry --roll-forward předané spuštěné aplikaci přepíší všechno ostatní.

Hodnoty

Pokud ale nastavíte dopředné přeposlání, použijte k nastavení chování jednu z následujících hodnot:

Hodnota Popis
Minor Výchozí, pokud není zadané.
Pokud chybí požadovaná podverzení, přeposílání na nejnižší vyšší podverzení. Pokud je požadovaná podverzena k dispozici, použije LatestPatch se zásada .
Major Pokud chybí požadovaná hlavní verze, přeposílání na další dostupnou vyšší hlavní verzi a nejnižší podverzení. Pokud je k dispozici požadovaná hlavní verze, použije se Minor zásada .
LatestPatch Přeposílání na nejvyšší verzi opravy. Tato hodnota zakáže dopředné přeposílání podverd.
LatestMinor Přeposílání do nejvyšší podverže, i když je k dispozici požadovaná podverže.
LatestMajor Přeposílání k nejvyšší hlavní a nejvyšší podverji, i když je k dispozici požadovaná hlavní verze.
Disable Nezadávam dopředu, vytvořte vazbu pouze na zadanou verzi. Tato zásada se nedoporučuje pro obecné použití, protože zakazuje přeposílání nejnovějších oprav. Tato hodnota se doporučuje jenom pro testování.

Samostatná nasazení zahrnují vybraný modul runtime.

Aplikaci můžete publikovat jako samostatnou distribuci. Tento přístup sdrušuje modul runtime a knihovny .NET s vaší aplikací. Samostatná nasazení nejsou závislá na běhových prostředích. K výběru verze modulu runtime dochází při publikování, nikoli za běhu.

Událost obnovení , ke které dojde při publikování, vybere nejnovější verzi opravy dané rodiny modulu runtime. Například vybere . dotnet publish NET 5.0.3, pokud se jedná o nejnovější verzi opravy v rodině modulu runtime .NET 5. Cílová rozhraní (včetně nejnovějších nainstalovaných oprav zabezpečení) je součástí aplikace.

Pokud není splněná minimální verze zadaná pro aplikaci, dojde k chybě. dotnet publish vytvoří vazbu na nejnovější verzi opravy modulu runtime (v rámci dané hlavní verze.podverdní verze). dotnet publish nepodporuje sémantiku dopředu dotnet runpro . Další informace o opravách a samostatných nasazeních najdete v článku o výběru oprav modulu runtime při nasazování aplikací .NET.

Samostatná nasazení mohou vyžadovat konkrétní verzi opravy. V souboru projektu můžete přepsat minimální verzi opravy modulu runtime (na vyšší nebo nižší verze), jak je znázorněno v následujícím příkladu:

<PropertyGroup>
  <RuntimeFrameworkVersion>5.0.7</RuntimeFrameworkVersion>
</PropertyGroup>

Element RuntimeFrameworkVersion přepíše výchozí zásady verze. Pro samostatná nasazení určuje RuntimeFrameworkVersion přesnou verzi RuntimeFrameworkVersion modulu runtime. U aplikací závislých na rozhraní určuje RuntimeFrameworkVersion minimální RuntimeFrameworkVersion verzi architektury modulu runtime.

Viz také