Icke-bakåtkompatibla ändringar i .NET 8

Om du migrerar en app till .NET 8 kan de icke-bakåtkompatibla ändringarna som anges här påverka dig. Ändringar grupperas efter teknikområde, till exempel ASP.NET Core eller Windows Forms.

Den här artikeln kategoriserar varje icke-bakåtkompatibel ändring som binärt inkompatibelt eller källkompatibelt, eller som en beteendeförändring:

  • Binärt inkompatibelt – När det körs mot den nya körningen eller komponenten kan befintliga binärfiler stöta på en icke-bakåtkompatibel beteendeförändring, till exempel att det inte går att läsa in eller köra, och i så fall kräva omkompilering.

  • Inkompatibel källa – När den omkompileras med den nya SDK:n eller komponenten eller för att rikta in sig på den nya körningen kan befintlig källkod kräva källändringar för att kompilera korrekt.

  • Beteendeförändring – Befintlig kod och binärfiler kan bete sig annorlunda vid körning. Om det nya beteendet är oönskat måste befintlig kod uppdateras och kompileras om.

ASP.NET Core

Title Typ av ändring
ConcurrencyLimiterMiddleware är föråldrat Källkompatibel
Anpassade konverterare för serialisering har tagits bort Beteendeförändring
ISystemClock är föråldrat Källkompatibel
Minimala API:er: IFormFile-parametrar kräver kontroller mot förfalskning Beteendeförändring
Hastighetsbegränsning av mellanprogram kräver AddRateLimiter Beteendeförändring
Säkerhetstokenhändelser returnerar en JsonWebToken Beteendeförändring
TrimMode är som standard fullt för Web SDK-projekt Källkompatibel

Containers

Title Typ av ändring
Paketet "ca-certificates" har tagits bort från Alpine-avbildningar Binärt inkompatibelt
Debian-containeravbildningar uppgraderade till Debian 12 Binär inkompatibel/beteendeförändring
Standardporten för ASP.NET Core har ändrats till 8080 Beteendeförändring
Kerberos-paketet har tagits bort från Alpine- och Debian-avbildningar Binärt inkompatibelt
Libintl-paketet har tagits bort från alpine-avbildningar Beteendeförändring
Containertaggar för flera plattformar är endast Linux Beteendeförändring
Ny appanvändare i Linux-avbildningar Beteendeförändring

Core .NET-bibliotek

Title Typ av ändring
Aktivitetsåtgärdsnamn när null Beteendeförändring
AnonymousPipeServerStream.Dispose-beteende Beteendeförändring
API-obsoletioner med anpassade diagnostik-ID:n Källkompatibel
Omvänt snedstrecksmappning i Unix-filsökvägar Beteendeförändring
Base64.DecodeFromUtf8-metoder ignorerar blanksteg Beteendeförändring
Stöd för boolesk uppräkningstyp har tagits bort Beteendeförändring
Enhetens aktuella katalogsökvägsuppräkning Beteendeförändring
Enumerable.Sum genererar ny OverflowException för vissa indata Beteendeförändring
FileStream skriver när röret stängs Beteendeförändring
FindSystemTimeZoneById returnerar inte nytt objekt Beteendeförändring
GC. GetGeneration kan returnera Int32.MaxValue Beteendeförändring
GetFolderPath-beteende i Unix Beteendeförändring
GetSystemVersion returnerar inte längre ImageRuntimeVersion Beteendeförändring
Ogiltiga anteckningar i ITypeDescriptorContext Källkompatibel
Legacy Console.ReadKey har tagits bort Beteendeförändring
Metodbyggare genererar parametrar med HasDefaultValue inställt på false Beteendeförändring
ProcessStartInfo.WindowStyle respekteras när UseShellExecute är falskt Beteendeförändring
RuntimeIdentifier returnerar plattform som körningen skapades för Beteendeförändring
Type.GetType genererar undantag för alla ogiltiga elementtyper Beteendeförändring

Kryptografi

Title Typ av ändring Introducerade
AesGcm-autentiseringstaggstorlek på macOS Beteendeförändring Förhandsversion 1
RSA. EncryptValue och RSA. DecryptValue föråldrad Källkompatibel Förhandsversion 1

Distribution

Title Typ av ändring
Värden bestämmer RID-specifika tillgångar Binär inkompatibel/beteendeförändring
.NET Monitor innehåller endast distrolösa bilder Beteendeförändring
StripSymbols är som standard true Beteendeförändring

Entity Framework Core

Icke-bakåtkompatibla ändringar i EF Core 8

Tillägg

Title Typ av ändring
ActivatorUtilities.CreateInstance fungerar konsekvent Beteendeförändring
ActivatorUtilities.CreateInstance kräver icke-null-provider Beteendeförändring
ConfigurationBinder genererar felmatchat värde Beteendeförändring
ConfigurationManager-paketet refererar inte längre till System.Security.Permissions Källkompatibel
DirectoryServices-paketet refererar inte längre till System.Security.Permissions Källkompatibel
Tomma nycklar har lagts till i ordlistan efter konfigurationsbindning Beteendeförändring
HostApplicationBuilder Inställningar. Args respekteras av HostApplicationBuilder ctor Beteendeförändring
ManagementDateTimeConverter.ToDateTime returnerar en lokal tid Beteendeförändring
Formateringsändring för System.Formats.Cbor DateTimeOffset Beteendeförändring

Globalisering

Title Typ av ändring
Datum- och tidskonverterare respekterar kulturargument Beteendeförändring
TwoDigitYearMax standard är 2049 Beteendeförändring

Interop

Title Typ av ändring
CreateObjectFlags.Unwrap packar bara upp på målinstansen Beteendeförändring
Anpassade marshallers kräver ytterligare medlemmar Källkompatibel
API:et IDispatchImplAttribute tas bort Binärt inkompatibelt
JSFunctionBinding implicit offentlig standardkonstruktor borttagen Binärt inkompatibelt
Valv Handle-typer måste ha en offentlig konstruktor Källkompatibel

Nätverk

Title Typ av ändring
SendFile genererar NotSupportedException för anslutningslösa socketar Beteendeförändring

Reflektion

Title Typ av ändring
IntPtr används inte längre för funktionspekartyper Beteendeförändring

SDK

Title Typ av ändring
CLI-konsolutdata använder UTF-8 Beteendeförändring/Inkompatibel källa och binär
Konsolkodning inte UTF-8 efter slutförande Beteendeförändring/binär inkompatibel
Containrar använder som standard taggen "senaste" Beteendeförändring
"dotnet pack" använder versionskonfiguration Beteendeförändring/Inkompatibel källa
"dotnet publish" använder versionskonfiguration Beteendeförändring/Inkompatibel källa
Duplicera utdata för -getItem, -getProperty och -getTargetResult Beteendeförändring
Implicit using för System.Net.Http har inte längre lagts till Beteendeförändring/Inkompatibel källa
MSBuild-anpassade härledda bygghändelser inaktuella Beteendeförändring
MSBuild respekterar DOTNET_CLI_UI_LANGUAGE Beteendeförändring
Körningsspecifika appar är inte fristående Inkompatibel källa/binär
--arch-alternativet innebär inte fristående Beteendeförändring
"dotnet restore" ger säkerhetsriskvarningar Beteendeförändring
SDK använder ett mindre RID-diagram Beteendeförändring/Inkompatibel källa
Source Link ingår i .NET SDK Källkompatibel
Trimning får inte användas med .NET Standard eller .NET Framework Beteendeförändring
Olistade paket som inte har installerats som standard för .NET-verktyg Beteendeförändring
.user-fil som importerats i yttre versioner Beteendeförändring
Versionskrav för .NET 8 SDK Källkompatibel

Serialization

Title Typ av ändring
BinaryFormatter inaktiverad för de flesta projekt Beteendeförändring
PublishedTrimmed-projekt misslyckas med reflektionsbaserad serialisering Beteendeförändring
Reflektionsbaserad deserializer löser metadata ivrigt Beteendeförändring

Windows Forms

Title Typ av ändring
Ändringar i fästpunktslayout Beteendeförändring
Certifikat kontrolleras innan fjärrbilder läses in i PictureBox Beteendeförändring
DefaultValueAttribute har tagits bort från vissa egenskaper Beteendeförändring
ExceptionCollection-ctor genererar ArgumentException Beteendeförändring
Formulär skalas enligt AutoScaleMode Beteendeförändring
ImageList.ColorDepth standard är Depth32Bit Beteendeförändring
System.Windows.Extensions refererar inte till System.Drawing.Common Källkompatibel
TableLayoutStyleCollection genererar ArgumentException Beteendeförändring
Formulär på översta nivån skalar minsta och högsta storlek till DPI Beteendeförändring
WFDEV002 obsoletion är nu ett fel Källkompatibel

Se även