Zásadní změny v .NET 6

Pokud migrujete aplikaci na .NET 6, můžou vás tyto zásadní změny ovlivnit. Změny jsou seskupené podle oblasti technologií, jako je ASP.NET Core nebo model Windows Forms.

Tento článek označuje, jestli je každá změna způsobující chybu binární kompatibilní nebo zdroj kompatibilní:

  • Binární kompatibilní – Existující binární binární soubory se načtou a úspěšně se spustí bez rekompilace a chování za běhu se nezmění.
  • Kompatibilní se zdrojem – Zdrojový kód se úspěšně zkompiluje beze změn při cílení na nový modul runtime nebo pomocí nové sady SDK nebo komponenty.

ASP.NET Core

Nadpis Binární kompatibilní Kompatibilní se zdrojem
ActionResult<T> nastaví StatusCode na 200 ✔️
Metoda AddDataAnnotationsValidations Zastaralá ✔️
Sestavení odebraná ze sdílené architektury Microsoft.AspNetCore.App ✔️
Blazor: Název parametru změněný v metodě RequestImageFileAsync ✔️
Blazor: Vlastnost WebEventDescriptor.EventArgsType byla nahrazena
Blazor: Interoperabilita pole bajtů ✔️
Changed MessagePack library in @microsoft/signalr-protocol-msgpack ✔️
Vlastnost ClientCertificate neaktivuje opakované vyjednávání pro HttpSys. ✔️
Metadata endpointName se nenastaví automaticky ✔️
Identita: Změna výchozí verze uživatelského rozhraní bootstrap
Kestrel: Změněné atributy zpráv protokolu ✔️
Rozdělení funkcí Microsoft.AspNetCore.Http.Features ✔️
Middleware: Middleware přesměrování HTTPS vyvolává výjimku na nejednoznačných portech HTTPS ✔️
Middleware: New Use přetížení ✔️
Minimální přejmenování rozhraní API ve verzi RC 1
Minimální přejmenování rozhraní API ve verzi RC 2
MVC při použití System.Text.Json neuchovává do vyrovnávací paměti typy IAsyncEnumerable ✔️
Změněné poznámky typu odkazu s možnou hodnotou Null ✔️
Zastaralá a odebraná rozhraní API ✔️
Funkce PreserveCompilationContext není ve výchozím nastavení nakonfigurovaná ✔️
Razor: Kompilátor už nevygeneruje sestavení Zobrazení. ✔️
Razor: Změny ID protokolování ✔️
Razor: RazorRozhraní API modulu označená jako zastaralá ✔️
SignalR: Klient Java se aktualizoval na RxJava3 ✔️
Ověřují se metody TryParse a BindAsync.

Kontejnery

Nadpis Binární kompatibilní Kompatibilní se zdrojem
Výchozí formátování protokolovacího nástroje konzoly v imagích kontejnerů ✔️

Informace o dalších zásadních změnách kontejnerů v .NET 6 najdete v poznámkách k verzi kontejneru .NET 6.

Knihovny Core .NET

Nadpis Binární kompatibilní Kompatibilní se zdrojem
Obsoletions rozhraní API s ne defaultním diagnostickým ID ✔️
Změny poznámek typu odkazu s možnou hodnotou null ✔️
Vyhodnocení podmíněného řetězce v metodách ladění ✔️
Chování Environment.ProcessorCount ve Windows ✔️
Chování zpětného volání EventSource ✔️ ✔️
File.Replace v systému Unix vyvolává výjimky odpovídající systému Windows. ✔️
FileStream uzamkne soubory se sdíleným zámkem v unixovém systému Unix. ✔️
FileStream už nesynchronizuje posun souboru s operačním systémem
Aktualizace FileStream.Position po dokončení operace ReadAsync nebo WriteAsync
Nová diagnostická ID pro zastaralá rozhraní API ✔️
Přetížení nové metody System.Linq.Queryable ✔️
Starší verze architektury vyřazené z balíčku ✔️
Změněné názvy parametrů ✔️
Názvy parametrů v odvozených typech Streamu ✔️
Částečná a nulová bajtová čtení v deflateStream, GZipStream a CryptoStream ✔️
Nastavení časového razítka u souboru jen pro čtení ve Windows ✔️
Standardní přesnost analýzy číselného formátu ✔️
Statické abstraktní členy v rozhraních ✔️
StringBuilder.Append přetížení a pořadí vyhodnocení ✔️
Rozhraní API silného názvu vyvolává výjimku PlatformNotSupportedException ✔️
System.Drawing.Common se podporuje jenom ve Windows
System.Security.SecurityContext je označený jako zastaralý. ✔️
Task.FromResult může vrátit singleton ✔️
Neošetřené výjimky ze služby BackgroundService ✔️

Kryptografie

Nadpis Binární kompatibilní Kompatibilní se zdrojem
Metody CreateEncryptor vyvolávají výjimku kvůli nesprávné velikosti zpětné vazby ✔️

Nasazení

Nadpis Binární kompatibilní Kompatibilní se zdrojem
Cesta hostitele x86 v 64bitovém systému Windows ✔️ ✔️

Entity Framework Core

Zásadní změny v EF Core 6

Rozšíření

Nadpis Binární kompatibilní Kompatibilní se zdrojem
AddProvider vyhledá zprostředkovatele, který není null. ✔️
FileConfigurationProvider.Load vyvolá výjimku InvalidDataException ✔️
Opakované elementy XML zahrnují index. ✔️
Řešení vyřazení ServiceProvider vyvolá výjimku ✔️

Globalizace

Nadpis Binární kompatibilní Kompatibilní se zdrojem
Vytvoření jazykové verze a mapování případů v režimu globalizace invariantní

Zprostředkovatel komunikace

Nadpis Binární kompatibilní Kompatibilní se zdrojem
Statické abstraktní členy v rozhraních ✔️

Kompilátor JIT

Nadpis Binární kompatibilní Kompatibilní se zdrojem
Přepojit argumenty volání podle ECMA-335 ✔️ ✔️

Sítě

Nadpis Binární kompatibilní Kompatibilní se zdrojem
Port odebraný z hlavního názvu služby (SPN) pro Kerberos a Negotiate ✔️
WebRequest, WebClient a ServicePoint jsou zastaralé. ✔️

Sada SDK

Nadpis Binární kompatibilní Kompatibilní se zdrojem
-p možnost pro dotnet run je zastaralá ✔️
Kód jazyka C# v šablonách, které dřívější verze nepodporují ✔️ ✔️
Implicitně zahrnuté soubory EditorConfig ✔️
Generování apphostu pro macOS ✔️
Vygenerování chyby u duplicitních souborů ve výstupu publikování ✔️
GetTargetFrameworkProperties a GetNearestTargetFramework odebrané z protokolu ProjectReference ✔️
Umístění instalace pro x64 emulované v Arm64 ✔️
Nástroj MSBuild už nepodporuje volání GetType()
.NET nejde nainstalovat do vlastního umístění ✔️ ✔️
OutputType není automaticky nastaveno na WinExe ✔️
Publikování ReadyToRunu s --no-restore vyžaduje změny. ✔️
runtimeconfig.dev.json soubor nevygenerovaný ✔️
Upozornění modulu runtimeIdentifier, pokud není zadáno samostatné ✔️
Manifesty nástrojů v kořenové složce ✔️ ✔️
Požadavky na verzi pro sadu .NET 6 SDK ✔️ ✔️
Soubor .version obsahuje verzi buildu. ✔️ ✔️
Zápis referenčních sestavení do IntermediateOutputPath ✔️

Serializace

Nadpis Binární kompatibilní Kompatibilní se zdrojem
DataContractSerializer uchovává znaménko při deserializaci -0. ✔️
Výchozí formát serializace pro TimeSpan ✔️
Serializace IAsyncEnumerable ✔️
Refaktoring rozhraní API pro generování zdrojového kódu JSON ✔️
JsonNumberHandlingAttribute u vlastností kolekce ✔️
Nová přetížení generátoru zdrojů JsonSerializer ✔️

Windows Forms

Nadpis Binární kompatibilní Kompatibilní se zdrojem
Šablony jazyka C# používají metodu bootstrap aplikace. ✔️
Selected TableLayout Nastavení properties throw InvalidEnumArgumentException ✔️
Rozhraní API související s DataGridView teď vyvolává výjimku InvalidOperationException ✔️
Metody ListViewGroupCollection vyvolá novou výjimku InvalidOperationException ✔️
Maximální délka textu NotifyIcon.Text se zvýšila ✔️
ScaleControl volal pouze v případě potřeby ✔️
Některá rozhraní API vyvolá výjimku ArgumentNullException. ✔️
TreeNodeCollection.Item vyvolá výjimku, pokud je uzel přiřazen jinde ✔️

XML a XSLT

Nadpis Binární kompatibilní Kompatibilní se zdrojem
Chování XNodeReader.GetAttribute pro neplatný index ✔️

Viz také