Vyberte verzi .NET, která se má použít.
Tento článek vysvětluje zásady používané nástroji .NET, sadou SDK a modulem runtime pro výběr verzí. Tyto zásady poskytují rovnováhu mezi spouštěním aplikací pomocí zadaných verzí a usnadňují upgrade počítačů pro vývojáře i koncové uživatele. Tyto zásady umožňují:
- Snadné a efektivní nasazení rozhraní .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:
- Když spustíte příkaz sady SDK, sada SDK použije nejnovější nainstalovanou verzi.
- Při sestavování sestavení definují monikers cílové architektury rozhraní API doby sestavení.
- Když spustíte aplikaci .NET, cílové aplikace závislé na architektuře se postupně vrátí.
- Když publikujete samostatnou aplikaci, samostatná nasazení zahrnují vybraný modul runtime.
Zbývající část tohoto dokumentu se zabývá těmito čtyřmi scénáři.
Sada SDK používá nejnovější nainstalovanou verzi.
Mezi příkazy sady SDK patří dotnet new
a dotnet run
. Rozhraní .NET CLI musí pro každý dotnet
příkaz zvolit verzi sady SDK. Používá nejnovější sadu SDK nainstalovanou na počítači ve výchozím nastavení, i když:
- Projekt cílí na starší verzi modulu runtime .NET.
- Nejnovější verze sady .NET SDK je verze 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 může být nutné použít starší verzi sady SDK. Tuto verzi zadáte v souboru global.json. Zásada "použít nejnovější" znamená, že k zadání verze sady .NET SDK používáte pouze soubor global.json , který je starší než nejnovější nainstalovaná verze.
soubor global.json lze umístit kdekoli v hierarchii souborů. Rozhraní příkazového řádku vyhledá v adresáři projektu první soubor global.json , který najde. Určujete, na které projekty se daný soubor global.json vztahuje, podle jejich místa v systému souborů. Rozhraní příkazového řádku .NET hledá soubor global.json iterativním přechodem směrem nahoru od aktuálního pracovního adresáře. První nalezený soubor global.json určuje použitou verzi. Pokud je tato verze sady SDK nainstalovaná, použije se tato verze. Pokud se sada SDK zadaná v souboru global.json nenajde, 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á nenajde.
Následující příklad ukazuje syntaxi global.json :
{
"sdk": {
"version": "5.0.0"
}
}
Výběr verze sady SDK je následující:
dotnet
vyhledá soubor global.json iterativním přecházením cesty směrem nahoru od aktuálního pracovního adresáře.dotnet
používá sadu SDK zadanou v prvním nalezeném souboru global.json .dotnet
používá nejnovější nainstalovanou sadu SDK, pokud není nalezena žádná global.json .
Další informace o výběru verze sady SDK najdete v části Párování pravidel a rollForward v článku s přehledem souboru global.json .
Monikers cílové architektury definují rozhraní API pro čas sestavení
Projekt sestavíte s využitím rozhraní API definovaných v cílové architektuře Moniker (TFM). Cílovou architekturu zadáte v souboru projektu. TargetFramework
Nastavte element v souboru projektu, jak je znázorněno v následujícím příkladu:
<TargetFramework>net5.0</TargetFramework>
Projekt můžete sestavit pro více TFM. Nastavení více cílových architektur je pro knihovny běžnější, ale dá se provádět i s aplikacemi. Zadáte TargetFrameworks
vlastnost (množné číslo ).TargetFramework
Cílové architektury jsou oddělené středníky, jak je znázorněno v následujícím příkladu:
<TargetFrameworks>net5.0;netcoreapp3.1;net47</TargetFrameworks>
Daná sada SDK podporuje pevnou sadu architektur omezených na cílovou architekturu modulu runtime, se kterým se dodává. Například sada .NET 5 SDK zahrnuje modul runtime .NET 5, což je implementace net5.0
cílové architektury. Sada .NET 5 SDK podporuje netcoreapp2.0
, netcoreapp2.1
netcoreapp3.0
, a tak dále, ale ne net6.0
(nebo vyšší). Nainstalujete 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á rozhraní .NET Standard malou relevanci, s výjimkou jednoho scénáře: .NET Standard je užitečný, pokud chcete cílit na rozhraní .NET i .NET Framework. .NET 5 implementuje všechny verze .NET Standard.
Další informace najdete v tématech .NET 5 a .NET Standard.
Roll-forward aplikací závislých na architektuře
Když spustíte aplikaci ze zdroje pomocí dotnet run
, z nasazení závislého na architektuře s dotnet myapp.dll
nebo ze spustitelného souboru závislého na architektuředotnet
pomocí myapp.exe
, je spustitelný soubor hostitelem aplikace.
Hostitel zvolí nejnovější verzi opravy nainstalované na počítači. Pokud jste například zadali net5.0
v souboru projektu a 5.0.2
je nainstalovaný nejnovější modul runtime .NET, použije se 5.0.2
modul runtime.
Pokud není nalezena žádná přijatelná 5.0.*
verze, použije se nová 5.*
verze. Pokud jste například zadali net5.0
a je nainstalovaná jenom 5.1.0
aplikace, spustí se pomocí modulu 5.1.0
runtime. Toto chování se označuje jako "roll-forward podverze". Nebudou brány v úvahu ani nižší verze. Pokud není nainstalovaný žádný přijatelný modul runtime, aplikace se nespustí.
Několik příkladů použití ukazuje chování, pokud cílíte na 5.0:
- ✔️ Je zadána hodnota 5.0. 5.0.3 je nejvyšší nainstalovaná verze opravy. Používá se 5.0.3.
- ❌ Je zadána hodnota 5.0. Nejsou nainstalovány žádné verze 5.0.*. 3.1.1 je nejvyšší nainstalovaný modul runtime. Zobrazí se chybová zpráva.
- ✔️ Je zadána hodnota 5.0. Nejsou nainstalovány žádné verze 5.0.*. 5.1.0 je nejvyšší nainstalovaná verze modulu runtime. Používá se 5.1.0.
- ❌ Je zadána hodnota 3.0. Nejsou nainstalovány žádné verze 3.x. 5.0.0 je nejvyšší nainstalovaný modul runtime. Zobrazí se chybová zpráva.
Roll-forward podverze má jeden vedlejší účinek, který může ovlivnit koncové uživatele. Představte si následující scénář:
- Aplikace určuje, že se vyžaduje verze 5.0.
- Při spuštění není verze 5.0.* nainstalovaná, ale verze 5.1.0 je. Použije se verze 5.1.0.
- Později uživatel nainstaluje verzi 5.0.3 a aplikaci znovu spustí. Nyní se použije verze 5.0.3.
Je možné, že verze 5.0.3 a 5.1.0 se chovají odlišně, zejména ve scénářích, jako je serializace binárních dat.
Řízení chování roll-forward
Před přepsáním výchozího chování roll-forward se seznamte s úrovní kompatibility modulu runtime .NET.
Chování aplikace k postupnému přechácení se dá nakonfigurovat čtyřmi různými způsoby:
Nastavení na úrovni projektu nastavením
<RollForward>
vlastnosti:<PropertyGroup> <RollForward>LatestMinor</RollForward> </PropertyGroup>
Soubor
*.runtimeconfig.json
.Tento soubor se vytvoří při kompilaci aplikace.
<RollForward>
Pokud byla vlastnost nastavena v projektu, je reprodukována v*.runtimeconfig.json
souboru jakorollForward
nastavení. Uživatelé můžou upravit tento soubor a změnit tak chování vaší aplikace.{ "runtimeOptions": { "tfm": "net5.0", "rollForward": "LatestMinor", "framework": { "name": "Microsoft.NETCore.App", "version": "5.0.0" } } }
Vlastnost
dotnet
příkazu--roll-forward <value>
Při spuštění aplikace můžete řídit chování roll-forward prostřednictvím příkazového řádku:
dotnet run --roll-forward LatestMinor dotnet myapp.dll --roll-forward LatestMinor myapp.exe --roll-forward LatestMinor
Proměnná
DOTNET_ROLL_FORWARD
prostředí.
Priorita
Při spuštění aplikace se chování roll forward nastavuje v následujícím pořadí, přičemž vyšší číslování položek má přednost před položkami s nižšími čísly:
- Nejprve se
*.runtimeconfig.json
vyhodnotí konfigurační soubor. DOTNET_ROLL_FORWARD
Dále se zvažuje proměnná prostředí, která přepisuje předchozí kontrolu.- Každý parametr předaný
--roll-forward
spuštěné aplikaci nakonec přepíše všechno ostatní.
Hodnoty
I když nastavíte nastavení roll-forward, použijte k nastavení chování jednu z následujících hodnot:
Hodnota | Popis |
---|---|
Minor |
Výchozí , pokud není zadáno. Pokud požadovaná podverze chybí, můžete přejít na nejnižší vyšší podverzi. Pokud požadovaná podverze existuje, použije se LatestPatch zásada. |
Major |
Pokud požadovaná hlavní verze chybí, přejděte na další dostupnou vyšší hlavní verzi a nejnižší podverzi. Pokud je požadovaná hlavní verze k dispozici, použije se Minor zásada. |
LatestPatch |
Přechod na nejvyšší verzi opravy Tato hodnota zakáže roll-forward podverze. |
LatestMinor |
Přechod na nejvyšší podverzi, a to i v případě, že je k dispozici požadovaná podverze. |
LatestMajor |
Přechod na nejvyšší hlavní a nejvyšší podverzi, a to i v případě, že je k dispozici požadovaná hlavní verze. |
Disable |
Nepřevádět dopředu, pouze vytvořit vazbu na zadanou verzi. Tato zásada se nedoporučuje pro obecné použití, protože zakazuje přechod k nejnovějším opravám. Tato hodnota se doporučuje pouze pro testování. |
Samostatná nasazení zahrnují vybraný modul runtime.
Aplikaci můžete publikovat jako samostatnou distribuci. Tento přístup sbalí modul runtime .NET a knihovny s vaší aplikací. Samostatná nasazení nejsou závislá na prostředích modulu runtime. Výběr verze modulu runtime probíhá v době publikování, nikoli v době běhu.
Událost obnovení , ke které dojde při publikování, vybere nejnovější verzi oprav dané řady modulů runtime. Například vybere .NET 5.0.3, dotnet publish
pokud se jedná o nejnovější verzi opravy v rodině modulů runtime .NET 5. Cílová architektura (včetně nejnovějších nainstalovaných oprav zabezpečení) je zabalená s aplikací.
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é řady hlavních.podverze). dotnet publish
nepodporuje sémantiku dotnet run
funkce . Další informace o opravách a samostatných nasazeních najdete v článku o výběru oprav za běhu při nasazování aplikací .NET.
Samostatná nasazení můžou vyžadovat konkrétní verzi opravy. Minimální verzi opravy modulu runtime (na vyšší nebo nižší verzi) v souboru projektu můžete přepsat, 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í RuntimeFrameworkVersion
určuje přesnou verzi architektury modulu runtime. U aplikací závislých na architektuře RuntimeFrameworkVersion
určuje minimální požadovanou verzi rozhraní runtime.
Viz také
.NET feedback
The .NET documentation is open source. Provide feedback here.
Váš názor
Odeslat a zobrazit názory pro