Novinky v instalaci a chování .NET Core 3.x
Kromě nových funkcí a neustále lepší výkonnosti se mění i některé drobnosti kolem instalce .NET Core a ASP.NET Core. Na to nejdůležitější poukážu v tomto článku.
Velikost instalačního balíčku
Přestože samotný framework nám umožňuje vyvíjet nové tipy aplikací (Blazor, gRPC, WPF, WinForms), instalační SDK balíček se pro všechny platformy zmenšil.
- v případě Windows je rozdíl mezi verzí 2.1.607 a 3.0.101 cca 23 MB
- v případě macOS je rozdíl mezi stejnými verzemi SDK cca 65 MB
Součástí SDK již nejsou nástroje pro Entity Framework Core a samotný ORM není nadále součástí webového frameworku. Nástroje i NuGet balíček s ORM je nutní připojit do aplikace ručně. Stejně tak z frameworku mizí řada knihoven kolem Identity a OAuth.
SDK Feature band auto uninstall
Označení prvního písmena v trojčíslí verze SDK označuje feature band (např. ve verzi 3.0.100 je feature band 1). Pokud nainstalujete na Windows více verzi SDK v rámci stejné feature band, pak se starší verze automaticky odinstalují. V zásadě tedy po instalaci teoretických 3.0.101, 3.0.110, 3.0.199 zůstane nainstalována jen ta nejvyšší verze.
Máte-li deklarovanou preferovanou verzi SDK v souboru global.json, pak i zde funguje SDK feature band roll-forward. Je-li v global.json uvedena verze 3.0.123 a vy tuto verzi mít v PC nebudete, použije se nejbližší feature band verze (tedy maximálně 3.0.199).
SDK roll-forward
Nově můžete v souboru global.json deklarovat chování automatického výběru verze SDK. Jedná se tedy o rozšíření dosavadního SDK pinningu, v rámci kterého bylo možné vybrat jen striktní verzi SDK.
{ "sdk": { "version": "2.2.100" "allowprerelease" : false, "rollforward" : "Minor" } }
Na příkladu výše deklaruji, že vyžaduji verzi 2.2.100 SDK nebo vyšší. Zakazuji přitom, aby se používali prerelease verze SDK. Nebude-li k dispozici verze 2.2.100, použije se verze 2.2.101 - 2.2.199. Nebude-li k dispozici žádná taková verze, pravidlo Minor automaticky povolí skok na nejbližší verzi 2.3.xyz (vyšší verze se ignorují). Hodnota rollforward může být: disable, patch, feature, minor, major, latestPatch, latestFeature, latestMinor, latestMajor.
Roll-Forward pro runtimes
Vlastnost RollForward je nyní dostupná i pro csproj, které ji propisuji do runtimeconfig.json. Jestliže tedy chci, aby má aplikace běžela minimálně na verzi 3.0.1 a chci povolit jen update na nejvyšší verzi patche, použiji nastavení v csproj:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <RuntimeFrameworkVersion>3.0.1</RuntimeFrameworkVersion> <RollForward>LatestPatch</RollForward>
Politiku roll-forward provádí tzv. host, který je součástí instalačního balíčku. Publikujete-li aplikace v režimu SCD (včetně runtime), pak se roll-forward uplatní v době publikace.
Trimming
Microsoft zapojil do procesu publikace v režimu SCD nově IL Linker. Díky tomu dojde k odebrání DLL knihoven, které nejsou v rámci řešení potřeba. Tím se zmenšuje i publikační balíček v tomto režimu. Vzhledem k tomu, že SCD není výchozí způsob publikace aplikací, musí se funkce trimmingu zapnout ručně v csproj:
<PropertyGroup> <PublishTrimmed>true</PublishTrimmed> </PropertyGroup>
FDD executable
Poslední drobnost se týká kompilace aplikace. S každým sestavením aplikace dochází k publikaci do bin adresáře v režimu FDD (nic nového). Nově však není nutné spouštět aplikaci pomocí dotnet driveru předáním argumentu s název DLLky, ale vždy vznikne platform-specific executable. Na mašinách s Windows je to exe soubor, na který stačí poklepat pro spuštění. Zbytek chování je již stejný (použije se klasicky hostfx se všemi důsledky).
TOP Termíny školení
ASP.NET Core se dočkal již své třetí verze a nabízí řadu možností pro vývoj webových aplikací a služeb. I v roce 2020 mám vypsané termíny na nejrůznější témata od základů .NET Core přes vývoj REST API až po mikroslužby pomocí gRPC.
Termín | Místo | ||
🍀 Novinky a změny v ASP.NET Core 3.x | leden 2020 | Praha | více |
🍀 Vývoj REST API v .NET Core (třídenní) | leden 2020 | Praha | více |
🍀 Vývoj aplikací v ASP.NET Core | březen 2020 | Praha | více |
🍀 Microservices v ASP.NET Core gRPC | březen 2020 | Praha | více |
🍀 Vývoj REST API v .NET Core (dvoudenní) | březen 2020 | Praha | více |
🍀 Tipy a triky pro ASP.NET Core | březen 2020 | Praha | více |