Změny, které narušují kompatibilitu v .NET 8

Pokud migrujete aplikaci na .NET 8, 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 kategorizuje každou změnu narušující kompatibilitu jako binárně nekompatibilní nebo zdrojově nekompatibilní, nebo jako behaviorální změnu:

  • Binárně nekompatibilní – Při spuštění proti novému běhovému modulu nebo součásti mohou existující binární soubory narazit na zásadní změnu v chování, například na selhání načtení nebo spuštění, a pokud ano, vyžadují rekompilaci.

  • Zdroj nekompatibilní – Při opětovném zkompilování pomocí nové sady SDK nebo komponenty nebo cílení na nový modul runtime může stávající zdrojový kód vyžadovat úspěšné kompilace zdrojových změn.

  • Změna chování – Existující kód a binární soubory se můžou chovat jinak za běhu. Pokud je nové chování nežádoucí, stávající kód bude potřeba aktualizovat a znovu zkompilovat.

ASP.NET Core

Podívejte se na změny způsobující chyby v ASP.NET Core 8.

Containers

Nadpis Typ změny
Balíček ca-certificates byl odstraněn z obrazů Alpine Binární nekompatibilní
Image kontejnerů Debianu upgradované na Debian 12 Binární nekompatibilní/behaviorální změna
Výchozí port ASP.NET Core se změnil na 8080 Změna chování
Balíček Kerberos odebraný z imagí Alpine a Debian Binární nekompatibilní
Balíček libintl odebraný z imagí Alpine Změna chování
Značky kontejnerů s více platformami jsou pouze pro Linux. Změna chování
Nový uživatel aplikace v imagích Linuxu Změna chování

Knihovny Core .NET

Nadpis Typ změny
Název operace aktivity, když má hodnotu null Změna chování
AnonymousPipeServerStream.Dispose - chování Změna chování
Zastarání API s vlastními diagnostickými ID Nekompatibilní zdroj
Mapování zpětného lomítka v unixových cestách k souborům Změna chování
Metody Base64.DecodeFromUtf8 ignorují prázdné znaky Změna chování
Logická podpora typu výčtu odebraná Změna chování
Formát Complex.ToString se změnil na <a; b> Změna chování
Výčet aktuální cesty k adresáři jednotky Změna chování
Enumerable.Sum vyvolá novou výjimku OverflowException pro některé vstupy Změna chování
FileStream zapisuje při zavření kanálu Změna chování
FindSystemTimeZoneById nevrací nový objekt. Změna chování
GC. GetGeneration může vrátit Hodnotu Int32.MaxValue Změna chování
Chování GetFolderPath na Unixu Změna chování
GetSystemVersion už nevrací ImageRuntimeVersion Změna chování
ITypeDescriptorContext nullovatelné anotace Nekompatibilní zdroj
LDAP rozhraní API nejsou k dispozici v .NET Standard / .NET Framework Binární nekompatibilní
Starší verze Console.ReadKey byla odebrána. Změna chování
Tvůrci metod generují parametry s hodnotou HasDefaultValue nastavenou na false Změna chování
Identifikátory URI částí balíčku v System.IO.Packaging se nyní porovnávají bez rozlišování velkých a malých písmen. Změna chování
ProcessStartInfo.WindowStyle je respektován, pokud je UseShellExecute nastaven na false Změna chování
Modul runtimeIdentifier vrací platformu, pro kterou byl modul runtime vytvořen. Změna chování
Type.GetType vyvolá výjimku pro všechny neplatné typy elementů. Změna chování

Kryptografie

Nadpis Typ změny Představeno
Velikost značky ověřování AES-GCM v systému macOS Změna chování Preview 1
RSA.ZašifrovacíHodnota a RSA.DešifrovacíHodnota zastaralé Nekompatibilní zdroj Preview 1

Nasazení

Nadpis Typ změny
Hostitel určuje prostředky specifické pro RID. Binární nekompatibilní/behaviorální změna
.NET Monitor zahrnuje pouze bezdistribuční obrazy Změna chování
Balíčky .NET pro openSUSE a SLES závisí na OpenSSL 3.x Změna chování
Výchozí hodnota pro StripSymbols je true Změna chování

Entity Framework Core

Podívejte se na zásadní změny v EF Core 8.

Rozšíření

Nadpis Typ změny
ActivatorUtilities.CreateInstance se chová konzistentně Změna chování
ActivatorUtilities.CreateInstance vyžaduje jiného poskytovatele než null. Změna chování
ConfigurationBinder bezobslužně přeskočí neplatné prvky pole. Změna chování
ConfigurationBinder vyvolá neshodnou hodnotu. Změna chování
Balíček ConfigurationManager již neodkazuje na System.Security.Permissions Nekompatibilní zdroj
Balíček DirectoryServices již neodkazuje na System.Security.Permissions Nekompatibilní zdroj
Prázdné klíče byly přidány do slovníku pomocí konfigurační vazby Změna chování
FromKeyedServicesAttribute.Key může mít hodnotu null. Nekompatibilní zdroj
HostApplicationBuilderSettings.Args respektované nástrojem HostApplicationBuilder ctor Změna chování
ManagementDateTimeConverter.ToDateTime vrátí místní čas. Změna chování
Změna formátování System.Formats.Cbor DateTimeOffset Změna chování

Globalizace

Nadpis Typ změny
Převaděče data a času dodržují argument kulturního nastavení Změna chování
Výchozí hodnota TwoDigitYearMax je 2049 Změna chování

Interoperabilita

Nadpis Typ změny
CreateObjectFlags.Unwrap rozbalí pouze v cílové instanci Změna chování
Vlastní maršálové vyžadují další členy. Nekompatibilní zdroj
Odebere se rozhraní API IDispatchImplAttribute. Binární nekompatibilní
Implicitní veřejný výchozí konstruktor JSFunctionBinding se odebral Binární nekompatibilní
Typy SafeHandle musí mít veřejný konstruktor. Nekompatibilní zdroj
Linux při překladu nativní knihovny už nevyužívá netcoredeps Změna chování

Sítě

Nadpis Typ změny
SendFile vyhodí výjimku NotSupportedException pro sokety bez připojení Změna chování
Informace o uživatelích v mailto: identifikátorech URI se porovnávaly. Změna chování

Reflexe

Nadpis Typ změny
IntPtr se už nepoužívá pro typy ukazatelů funkce. Změna chování

sada SDK

Nadpis Typ změny
Výstup konzoly CLI používá UTF-8 Změna chování / Zdroj a binární nekompatibilní
Kódování konzoly po dokončení není UTF-8 Změna chování / Binární nekompatibilní
Kontejnery ve výchozím nastavení používají značku 'latest' Změna chování
Dotnet Pack používá konfiguraci vydané verze. Změna chování / Nekompatibilní zdroj
'dotnet publish' používá konfiguraci Release. Změna chování / Nekompatibilní zdroj
Duplicitní výstup pro -getItem, -getProperty a -getTargetResult Změna chování
Implicitní using pro System.Net.Http se už nepřidává Změna chování / Nekompatibilní zdroj
Uživatelsky odvozené události sestavení v MSBuildu jsou zastaralé Změna chování
MsBuild respektuje DOTNET_CLI_UI_LANGUAGE Změna chování
Aplikace specifické pro runtime, které nejsou samostatné Nekompatibilní zdroj/binární soubor
Možnost --arch nevytváří samostatnou aplikaci Změna chování
Příkaz dotnet restore vytváří upozornění na zranitelnosti zabezpečení. Změna chování
Balíček seznamu dotnet varuje, pokud zdroj neposkytuje data ohrožení zabezpečení. Změna chování
SDK používá menší graf RID. Změna chování / Nekompatibilní zdroj
Nastavení debugSymbols na false zakáže generování PDB. Změna chování
Zdrojový odkaz zahrnutý v sadě .NET SDK Nekompatibilní zdroj
Trimování se nedá použít s rozhraním .NET Standard nebo .NET Framework. Změna chování
Neinstalované balíčky nejsou ve výchozím nastavení nainstalované pro nástroje .NET Změna chování
Soubor .user importovaný ve vnějších buildech Změna chování
Požadavky na verzi pro sadu .NET 8 SDK Nekompatibilní zdroj

Serializace

Nadpis Typ změny
BinaryFormatter zakázáno pro většinu projektů Změna chování
Publikované projekty Trimmed selžou při serializaci založené na reflexi Změna chování
Deserializátor založený na reflexi okamžitě řeší metadata. Změna chování

model Windows Forms

Nadpis Typ změny
Kontrola certifikátů před načtením vzdálených obrázků v PictureBoxu Změna chování
DateTimePicker.Text je prázdný řetězec Změna chování
DefaultValueAttribute odebrané z některých vlastností Změna chování
ExceptionCollection ctor vyvolá ArgumentException Změna chování
Formuláře se škálují podle režimu AutoScaleMode Změna chování
Výchozí hodnota ImageList.ColorDepth je Depth32Bit Změna chování
System.Windows.Extensions neodkazuje na System.Drawing.Common Nekompatibilní zdroj
TableLayoutStyleCollection vyvolá výjimku ArgumentException Změna chování
Formuláře nejvyšší úrovně se škálují na minimální a maximální velikost podle DPI. Změna chování
Označení WFDEV002 jako zastaralé je teď chyba Nekompatibilní zdroj

Viz také