=

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

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).

Miroslav Holec

Miroslav Holec

3. 12. 2019

Článek se vztahuje k verzi produktu .NET Core 3.0
Tento článek je již velmi zastaralý. Článek nemusí popisovat aktuální stav technologie, ideální řešení a můj současný pohled na dané téma.

Pomohl článek? Kupte mi kávu!

Kupte mi kávu!


kontakt zde

Dotazy, poptávky a objednávky

mirek@miroslavholec.cz
Loading