Zmiany powodujące niekompatybilność w .NET 8

Jeśli migrujesz aplikację do platformy .NET 8, zmiany powodujące niezgodność wymienione tutaj mogą mieć wpływ na Ciebie. Zmiany są pogrupowane według obszaru technologii, takiego jak ASP.NET Core lub Windows Forms.

Ten artykuł kategoryzuje każdą zmianę jako niezgodną binarnie albo niezgodną źródłowo, lub jako zmianę behawioralną:

  • Niezgodność binarna — w przypadku uruchamiania w nowym środowisku uruchomieniowym lub ze składnikiem, istniejące pliki binarne mogą napotkać niezgodność w działaniu, taką jak niepowodzenie ładowania lub uruchomienia, i w takim przypadku wymagają ponownej kompilacji.

  • Niekompatybilne źródło — Podczas ponownej kompilacji z użyciem nowego zestawu SDK, składnika lub docelowego nowego środowiska uruchomieniowego, istniejący kod źródłowy może wymagać wprowadzenia zmian, aby pomyślnie się skompilować.

  • Zmiana zachowania — istniejący kod i pliki binarne mogą zachowywać się inaczej w czasie wykonywania. Jeśli nowe zachowanie jest niepożądane, należy zaktualizować i ponownie skompilować istniejący kod.

ASP.NET Core

Zobacz Zmiany łamiące zgodność w ASP.NET Core 8.

Containers

Tytuł Typ zmiany
Pakiet ca-certificates usunięty z obrazów Alpine Niezgodność binarna
Obrazy kontenerów Debian uaktualnione do systemu Debian 12 Niezgodność binarna lub zmiana w zachowaniu
Domyślny port ASP.NET Core został zmieniony na 8080 Zmiana zachowania
Pakiet Kerberos usunięty z obrazów Alpine i Debian Niezgodność binarna
Pakiet "libintl" usunięty z obrazów alpejskich Zmiana zachowania
Tagi kontenerów wieloplatformowych są obsługiwane tylko w systemie Linux Zmiana zachowania
Nowy użytkownik "app" na obrazach systemu Linux Zmiana zachowania

Podstawowe biblioteki platformy .NET

Tytuł Typ zmiany
Nazwa operacji działania, gdy ma wartość null Zmiana zachowania
Zachowanie AnonymousPipeServerStream.Dispose Zmiana zachowania
Przestarzałości interfejsu API z niestandardowymi identyfikatorami diagnostycznymi Niezgodne źródło
Mapowanie ukośników odwrotnych w ścieżkach plików systemu Unix Zmiana zachowania
Metody Base64.DecodeFromUtf8 ignorują białe znaki Zmiana zachowania
Usunięto obsługę typu wyliczeniowego opartego na typie Boolean Zmiana zachowania
Format Complex.ToString został zmieniony na <a; b> Zmiana zachowania
Bieżące wyliczanie ścieżki katalogu bieżącego dysku Zmiana zachowania
Funkcja Enumerable.Sum zgłasza nowy wyjątek OverflowException dla niektórych danych wejściowych Zmiana zachowania
FileStream zapisuje, gdy potok jest zamknięty Zmiana zachowania
Identyfikator FindSystemTimeZoneById nie zwraca nowego obiektu Zmiana zachowania
Metoda GC.GetGeneration może zwrócić Int32.MaxValue Zmiana zachowania
Zachowanie GetFolderPath w systemie Unix Zmiana zachowania
Polecenie GetSystemVersion już nie zwraca wartości ImageRuntimeVersion Zmiana zachowania
ITypeDescriptorContext — adnotacje dla wartości null Niezgodne źródło
Interfejsy API LDAP nie są dostępne na platformie .NET Standard/.NET Framework Niezgodność binarna
Legacy Console.ReadKey został usunięty Zmiana zachowania
Konstruktorzy metod generują parametry z wartością HasDefaultValue ustawioną na false Zmiana zachowania
Identyfikatory URI części pakietu są teraz porównywane bez uwzględniania wielkości liter w pakiecie System.IO.Packaging Zmiana zachowania
ProcessStartInfo.WindowStyle honorowany, gdy parametr UseShellExecute ma wartość false Zmiana zachowania
RuntimeIdentifier zwraca platformę, dla której utworzono środowisko uruchomieniowe Zmiana zachowania
Type.GetType zgłasza wyjątek dla wszystkich nieprawidłowych typów elementów Zmiana zachowania

Kryptografia

Tytuł Typ zmiany Wprowadzono
Rozmiar tagu uwierzytelniania AesGcm w systemie macOS Zmiana zachowania Podgląd 1
RSA. EncryptValue i RSA. DecryptValue przestarzałe Niezgodne źródło Podgląd 1

Wdrożenie

Tytuł Typ zmiany
Host określa zasoby specyficzne dla RID Niekompatybilna/zachowaniowa zmiana binarna
Program .NET Monitor zawiera tylko obrazy bez dystrybucji Zmiana zachowania
Pakiety .NET dla programów openSUSE i SLES zależą od biblioteki OpenSSL 3.x Zmiana zachowania
Właściwość StripSymbols domyślnie ma wartość true Zmiana zachowania

Entity Framework Core

Zobacz Zmiany powodujące niezgodność w programie EF Core 8.

Rozszerzenia

Tytuł Typ zmiany
AktywatorUtilities.CreateInstance zachowuje się spójnie Zmiana zachowania
ActivatorUtilities.CreateInstance wymaga dostawcy innego niż null Zmiana zachowania
ConfigurationBinder dyskretnie pomija nieprawidłowe elementy tablicy Zmiana zachowania
ConfigurationBinder zgłasza niezgodną wartość Zmiana zachowania
Pakiet ConfigurationManager nie odwołuje się już do pliku System.Security.Permissions Niezgodne źródło
Pakiet DirectoryServices nie odwołuje się już do pliku System.Security.Permissions Niezgodne źródło
Puste klucze dodane do słownika przez powiązanie konfiguracji Zmiana zachowania
Wartość FromKeyedServicesAttribute.Key może mieć wartość null Niezgodne źródło
HostApplicationBuilderSettings.Args szanowany przez narzędzie HostApplicationBuilder Zmiana zachowania
ManagementDateTimeConverter.ToDateTime zwraca czas lokalny Zmiana zachowania
Zmiana formatowania System.Formats.Cbor DateTimeOffset Zmiana zachowania

Globalizacja

Tytuł Typ zmiany
Konwertery dat i godzin honorują parametr kultury Zmiana zachowania
Domyślna wartość TwoDigitYearMax to 2049 Zmiana zachowania

Interoperacyjność

Tytuł Typ zmiany
CreateObjectFlags.Unwrap działa tylko na instancji docelowej Zmiana zachowania
Niestandardowe marshalerzy wymagają dodatkowych członków Niezgodne źródło
API IDispatchImplAttribute został usunięty Niezgodność binarna
JsFunctionBinding niejawny publiczny konstruktor domyślny został usunięty Niezgodność binarna
Typy SafeHandle muszą mieć publiczny konstruktor Niezgodne źródło
Rozpoznawanie bibliotek natywnych w systemie Linux nie jest już stosowane netcoredeps Zmiana zachowania

Sieć

Tytuł Typ zmiany
Element SendFile zgłasza wyjątek NotSupportedException dla gniazd bez połączenia Zmiana zachowania
Informacje użytkownika w mailto: identyfikatorach URI są porównywane Zmiana zachowania

Refleksja

Tytuł Typ zmiany
IntPtr nie jest już używany dla typów wskaźników funkcji Zmiana zachowania

SDK

Tytuł Typ zmiany
Dane wyjściowe konsoli CLI używają kodowania UTF-8 Zmiana zachowania systemu/Niezgodność źródła i plików binarnych
Kodowanie konsoli nie jest UTF-8 po zakończeniu Zmiana zachowania/Niezgodność binarna
Kontenery domyślnie używają tagu "latest" Zmiana zachowania
"dotnet pack" używa konfiguracji Release Zmiana zachowania/Niezgodność źródła
Polecenie "dotnet publish" używa konfiguracji wydania Zmiana zachowania/Niezgodność źródła
Zduplikowane dane wyjściowe dla parametrów -getItem, -getProperty i -getTargetResult Zmiana zachowania
Domyślna dla System.Net.Http nie jest już dodawanausing Zmiana zachowania/Niezgodność źródła
Niestandardowe zdarzenia kompilacji pochodnej w MSBuild uznane za przestarzałe Zmiana zachowania
Program MSBuild szanuje DOTNET_CLI_UI_LANGUAGE Zmiana zachowania
Aplikacje specyficzne dla środowiska uruchomieniowego nie są samodzielne Niezgodne źródło/binarne
Opcja --arch nie oznacza pakietu samowystarczalnego Zmiana zachowania
Polecenie "dotnet restore" powoduje wygenerowanie ostrzeżeń o lukach w zabezpieczeniach Zmiana zachowania
Opcja "dotnet list package" ostrzega, jeśli źródło nie dostarcza danych o lukach w zabezpieczeniach Zmiana zachowania
Zestaw SDK używa mniejszego grafu RID Zmiana zachowania/Niezgodność źródła
Ustawianie wartości DebugSymbols na wartość false powoduje wyłączenie generowania pliku PDB Zmiana zachowania
Link źródłowy uwzględniony w zestawie SDK platformy .NET Niezgodne źródło
Przycinanie może nie być używane w programie .NET Standard lub .NET Framework Zmiana zachowania
Pakiety nieznajdowane na liście nie są instalowane domyślnie dla narzędzi platformy .NET Zmiana zachowania
Plik .user zaimportowany w kompilacjach zewnętrznych Zmiana zachowania
Wymagania dotyczące wersji zestawu .NET 8 SDK Niezgodne źródło

Serializacja

Tytuł Typ zmiany
BinaryFormatter wyłączony dla większości projektów Zmiana zachowania
Serializacja oparta na odbiciu odbicia projektów opublikowanychTrimmed kończy się niepowodzeniem Zmiana zachowania
Deserializator oparty na odbiciu z niecierpliwością rozwiązuje metadane Zmiana zachowania

Windows Forms

Tytuł Typ zmiany
Certyfikaty sprawdzane przed załadowaniem obrazów zdalnych w aplikacji PictureBox Zmiana zachowania
DateTimePicker.Text to pusty ciąg znaków Zmiana zachowania
DefaultValueAttribute usunięto z niektórych właściwości Zmiana zachowania
ExceptionCollection ctor zgłasza ArgumentException Zmiana zachowania
Skalowanie formularzy zgodnie z trybem AutoScaleMode Zmiana zachowania
Domyślna wartość ImageList.ColorDepth to Depth32Bit Zmiana zachowania
System.Windows.Extensions nie odwołuje się do pliku System.Drawing.Common Niezgodne źródło
TableLayoutStyleCollection zgłasza wyjątek ArgumentException Zmiana zachowania
Formularze najwyższego poziomu skalują swoją minimalną i maksymalną wielkość w zależności od DPI Zmiana zachowania
Przestarzałość WFDEV002 jest teraz błędem Niezgodne źródło

Zobacz też