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
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 |