Dela via


Icke-bakåtkompatibla ändringar i .NET 9

Om du migrerar en app till .NET 9 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.

Kommentar

Den här artikeln är ett pågående arbete. Det är inte en fullständig lista över icke-bakåtkompatibla ändringar i .NET 9. Information om hur du kör frågor mot icke-bakåtkompatibla ändringar som fortfarande väntar på publicering finns i Problem med .NET.

ASP.NET Core

Title Typ av ändring Introducerad version
DefaultKeyResolution.ShouldGenerateNewKey har ändrat betydelse Beteendeförändring Förhandsversion 3
Dev cert export skapar inte längre mappen Beteendeförändring RC 1
HostBuilder aktiverar ValidateOnBuild/ValidateScopes i utvecklingsmiljön Beteendeförändring Förhandsversion 7
Äldre Mono- och Emscripten-API:er exporteras inte till globala namnområden Källkompatibel Allmän tillgänglighet
Mellanprogramstyper med flera konstruktorer Beteendeförändring RC 1

Containers

Title Typ av ändring Introducerad version
Containeravbildningar installerar inte längre zlib- Beteendeförändring Förhandsversion 7
.NET Monitor-avbildningar förenklas till endast versionstaggar Beteendeförändring Förhandsversion 5

Core .NET-bibliotek

Title Typ av ändring Introducerad version
Lägga till en ZipArchiveEntry med CompressionLevel ställer in ZIP central katalogrubrik allmänna bitflaggor Beteendeförändring Förhandsversion 5
Altered UnsafeAccessor support for non-open generics Beteendeförändring Förhandsversion 6
API-obsoletioner med anpassade diagnostik-ID:n Källkompatibel (Flera)
tvetydig överlagringsupplösning som påverkar implicita StringValues-operatorer Källkompatibel Allmän tillgänglighet
Maximal längd för BigInteger Beteendeförändring Förhandsversion 6
BinaryReader.GetString() returnerar "\uFFFD" på felaktiga sekvenser Beteendeförändring Förhandsversion 7
C#-överlagringsmatchning föredrar params överlagringar av typen 'span' Källkompatibel
Det går inte att skapa en typ av matris med System.Void Beteendeförändring Förhandsversion 1
Standard Equals() och GetHashCode() utkast för typer som har markerats med InlineArrayAttribute Beteendeförändring Förhandsversion 6
EnumConverter validerar registrerade typer som ska räknas upp Beteendeförändring Förhandsversion 7
FromKeyedServicesAttribute matar inte längre in icke-nyckelade parametrar Beteendeförändring RC 1
IncrementingPollingCounter inledande återanrop är asynkront Beteendeförändring RC 1
Storleksgränsen för infogad matris struct tillämpas Beteendeförändring Förhandsversion 1
InMemoryDirectoryInfo prepends rootDir till filer Beteendeförändring Förhandsversion 1
Ny TimeSpan.From*() överlagring som tar heltal Källkompatibel Förhandsversion 3
Ny version av vissa OOB-paket Källkompatibel Förhandsversion 5
RuntimeHelpers.GetSubArray returnerar en annan typ Beteendeförändring Förhandsversion 1
String.Trim(params ReadOnlySpan<char>) överlagring borttagen Inkompatibel källa/binär Allmän tillgänglighet
Stöd för tomma miljövariabler Beteendeförändring Förhandsversion 6
ZipArchiveEntry-namn och kommentarer respekterar UTF8-flaggan Beteendeförändring RC 1

Kryptografi

Title Typ av ändring Introducerad version
SafeEvpPKeyHandle.DuplicateHandle up-refs referensen Beteendeförändring Förhandsversion 7
Vissa X509Certificate2- och X509Certificate-konstruktorer är föråldrade Källkompatibel Förhandsversion 7
Windows privata nyckellivslängd förenklad Beteendeförändring Förhandsversion 7

Distribution

Title Typ av ändring Introducerad version
Inaktuella Windows/macOS/Linux MonoVM-körningspaket Källkompatibel Förhandsversion 7

Interop

Title Typ av ändring Introducerad version
CET stöds som standard Binärt inkompatibelt Förhandsversion 6

JIT-kompilator

Title Typ av ändring Introducerad version
Flyttal till heltalskonverteringar är mättade Beteendeförändring Förhandsversion 4
Vissa SVE-API:er har tagits bort Källkompatibel RC 2

Nätverk

Title Typ av ändring Introducerad version
API-obsoletioner Källkompatibel Förhandsversion 6
HttpClient-måttrapport server.port villkorslöst Beteendeförändring Förhandsversion 7
HttpClientFactory-loggning redigerar huvudvärden som standard Beteendeförändring RC 1
HttpClientFactory använder SocketsHttpHandler som primär hanterare Beteendeförändring Förhandsversion 6
HttpListenerRequest.UserAgent är null Källkompatibel Förhandsversion 1
URI-frågeredigering i HttpClient EventSource-händelser Beteendeförändring Förhandsversion 7
URI-frågeredigering i IHttpClientFactory-loggar Beteendeförändring Förhandsversion 7

SDK och MSBuild

Title Typ av ändring Introducerad version
dotnet restore granskar transitiva paket Beteendeförändring Förhandsversion 6
dotnet sln add tillåter inte ogiltiga filnamn Beteendeförändring 9.0.2xx
dotnet watch inkompatibel med frekvent omlastning för gamla ramverk Beteendeförändring RC 1
dotnet workload utdataändring för kommandon Beteendeförändring Förhandsversion 1
installer lagringsplatsens version inte längre dokumenterad Beteendeförändring Förhandsversion 5
Nytt standard-RID som används när man riktar sig mot .NET Framework Källkompatibel Allmän tillgänglighet
Terminallogger är standard Beteendeförändring Förhandsversion 1
Versionskrav för .NET 9 SDK Källkompatibel Allmän tillgänglighet
Varning som genereras för .NET Standard 1.x-målet Källkompatibel Förhandsversion 6
Varning som genereras för .NET 7-målet Källkompatibel Allmän tillgänglighet

Serialisering

Title Typ av ändring Introducerad version
BinaryFormatter genererar alltid Beteendeförändring Förhandsversion 6
Nullable JsonDocument-egenskaper avserialiseras till JsonValueKind.Null Beteendeförändring Förhandsversion 1
System.Text.Json-metadataläsaren avkodar nu metadatas eskaperade egenskapsnamn Beteendeförändring Allmän tillgänglighet

Windows Forms

Title Typ av ändring Introducerad version
BindingSource.SortDescriptions returnerar inte null Beteendeförändring Förhandsversion 1
Ändringar i nullabilitetsanteckningar Källkompatibel Förhandsversion 1
ComponentDesigner.Initialize genererar ArgumentNullException Beteendeförändring Förhandsversion 1
DataGridViewRowAccessibleObject.Name startradsindex Beteendeförändring Förhandsversion 1
Stöd för IMsoComponent är opt-in Beteendeförändring Förhandsversion 2
Nya säkerhetsanalysverktyg Källkompatibel RC 1
Inget undantag om DataGridView är null Beteendeförändring Förhandsversion 1
PictureBox genererar HttpClient-undantag Beteendeförändring Förhandsversion 6
StatusStrip använder en annan standardåtergivning Beteendeförändring Allmän tillgänglighet

WPF

Title Typ av ändring Introducerad version
GetXmlNamespaceMaps typändring Beteendeförändring/Inkompatibel källa Förhandsversion 3

Se även