Novinky v instalaci a chování .NET Core 3.x

Od verze: .NET Core 3.0
Miroslav Holec

Miroslav Holec

3. prosince. 2019

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.

Install Packages

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.

Feature Bands

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

👨‍🎓 Čerstvé školení 2020
👍 Vývoj aplikací v ASP.NET Core
👍 Vývoj REST služeb v .NET Core
👍 Microservices v ASP.NET Core gRPC
👍 Tipy a triky v ASP.NET Core
👍 Změny v ASP.NET Core 3.x