Condividi tramite


Modifiche radicali in .NET 9

Se stai eseguendo la migrazione di un'app a .NET 9, le modifiche incompatibili elencate qui potrebbero influire su di te. Le modifiche vengono raggruppate in base all'area tecnologica, ad esempio ASP.NET Core o Windows Forms.

Questo articolo classifica ogni modifica che causa un'interruzione come binaria non compatibile o origine non compatibile o come modifica funzionale:

  • Binario non compatibile: quando viene eseguita sul nuovo runtime o componente, i file binari esistenti possono riscontrare una modifica che causa un'interruzione funzionale, ad esempio un errore di caricamento o esecuzione e, in tal caso, richiedere la ricompilazione.

  • Origine non compatibile : quando viene ricompilata usando il nuovo SDK o componente oppure per specificare come destinazione il nuovo runtime, il codice sorgente esistente potrebbe richiedere modifiche all'origine per la compilazione.

  • Modifica funzionale: il codice esistente e i file binari possono comportarsi in modo diverso in fase di esecuzione. Se il nuovo comportamento non è desiderato, è necessario aggiornare e ricompilare il codice esistente.

Nota

Questo articolo è in fase di aggiornamento. Non è un elenco completo delle modifiche che rompono la compatibilità in .NET 9. Per eseguire query sulle modifiche incompatibili ancora in attesa di pubblicazione, vedere Problemi di .NET.

ASP.NET Core

Titolo Tipo di modifica Versione introdotta
DefaultKeyResolution.ShouldGenerateNewKey ha modificato il significato Cambiamento comportamentale Preview 3
L'esportazione del certificato di sviluppo non crea più la cartella Cambiamento comportamentale RC 1
HostBuilder abilita ValidateOnBuild/ValidateScopes nell'ambiente di sviluppo Cambiamento comportamentale Preview 7
Le API legacy di Mono ed Emscripten non sono esportate nello spazio dei nomi globale Origine non compatibile Disponibilità generale
Tipi di middleware con più costruttori Cambiamento comportamentale RC 1

Contenitori

Titolo Tipo di modifica Versione introdotta
Le immagini contenitore non installano più zlib Cambiamento comportamentale Preview 7
immagini di .NET Monitor semplificate ai soli tag di versione Cambiamento comportamentale Preview 5

Principali librerie .NET

Titolo Tipo di modifica Versione introdotta
L’aggiunta di un oggetto ZipArchiveEntry con CompressionLevel imposta i flag dei bit dell'intestazione della directory centrale ZIP per uso generico Cambiamento comportamentale Preview 5
Supporto UnsafeAccessor alterato per generici non aperti Modifiche comportamentali Preview 6
Obsolescenze delle API con ID diagnostici personalizzati Origine non compatibile (Multipla)
Risoluzione ambigua di overload che influisce sugli operatori impliciti di StringValues Origine non compatibile Disponibilità generale
Lunghezza massima BigInteger Cambiamento comportamentale Preview 6
BinaryReader.GetString() restituisce "\uFFFD" per sequenze malformate Modifiche comportamentali Preview 7
C# risolve l'overload preferendo gli overload di tipi spanparams Origine non compatibile
Creare un tipo di array di System.Void non è consentito Cambiamento comportamentale Preview 1
I Predefiniti Equals() e GetHashCode() producono un'eccezione per i tipi contrassegnati con InlineArrayAttribute Cambiamento comportamentale Preview 6
EnumConverter convalida che i tipi registrati siano enum Cambiamento comportamentale Preview 7
FromKeyedServicesAttribute non inserisce più un parametro non con chiave Cambiamento comportamentale RC 1
Il callback iniziale IncrementingPollingCounter è asincrono Cambiamento comportamentale RC 1
Viene applicato il limite di dimensioni degli struct della matrice inline Cambiamento comportamentale Preview 1
InMemoryDirectoryInfo antepone il rootDir ai file Modifica del comportamento Preview 1
Nuovi overload TimeSpan.From*() che accettano numeri interi Origine non compatibile Preview 3
Nuova versione di alcuni pacchetti OOB Origine non compatibile Preview 5
RuntimeHelpers.GetSubArray restituisce un tipo diverso Cambiamento comportamentale Preview 1
Overload String.Trim(params ReadOnlySpan<char>) rimosso Origine/file binario non compatibile Disponibilità generale
Supporto per le variabili di ambiente vuote Cambiamento comportamentale Preview 6
I nomi e i commenti ZipArchiveEntry rispettano il flag UTF8 Cambiamento comportamentale RC 1

Crittografia

Titolo Tipo di modifica Versione introdotta
API rimosse da System.Security.Cryptography.Pkcs netstandard2.0 Origine non compatibile Disponibilità generale
SafeEvpPKeyHandle.DuplicateHandle incrementa i riferimenti dell'handle Cambiamento comportamentale Preview 7
Alcuni costruttori X509Certificate2 e X509Certificate sono obsoleti Origine non compatibile Preview 7
Durata semplificata della chiave privata di Windows Cambiamento comportamentale Preview 7

Distribuzione

Titolo Tipo di modifica Versione introdotta
Pacchetti di runtime desktop Windows/macOS/Linux MonoVM deprecati Origine non compatibile Preview 7

Interop

Titolo Tipo di modifica Versione introdotta
CET supportato per impostazione predefinita Binario incompatibile Preview 6

Compilatore JIT

Titolo Tipo di modifica Versione introdotta
Le conversioni da virgola mobile a integer stanno saturando Cambiamento comportamentale Preview 4
Rimozione di alcune API SVE Origine non compatibile RC 2

Rete

Titolo Tipo di modifica Versione introdotta
Obsolescenze delle API Origine non compatibile Preview 6
Il report delle metriche di HttpClient viene generato incondizionatamenteserver.port Cambiamento comportamentale Preview 7
Per impostazione predefinita, HttpClientFactory oscura i valori delle intestazioni durante la registrazione Cambiamento comportamentale RC 1
HttpClientFactory usa SocketsHttpHandler come gestore primario Modifica comportamentale Preview 6
HttpListenerRequest.UserAgent può essere nullo Origine non compatibile Preview 1
Redazione di query URI negli eventi HttpClient EventSource Cambiamento comportamentale Preview 7
Redazione di query URI nei registri di IHttpClientFactory Cambiamento comportamentale Preview 7

SDK e MSBuild

Titolo Tipo di modifica Versione introdotta
dotnet restore controlla i pacchetti transitivi Modifica comportamentale Preview 6
dotnet sln add non permette nomi di file non validi Cambiamento comportamentale 9.0.2xx
dotnet watchincompatibile con Ricaricamento rapido per i framework precedenti Cambiamento comportamentale RC 1
dotnet workload modifica dell'output dei comandi Cambiamento comportamentale Preview 1
installer versione del repository non più documentata Cambiamento comportamentale Preview 5
Nuovo RID predefinito usato quando è destinato a .NET Framework Origine non compatibile Disponibilità generale
Il logger del terminale è predefinito Cambiamento comportamentale Preview 1
Requisiti di versione per .NET 9 SDK Origine non compatibile Disponibilità generale
Avviso emesso per la destinazione .NET Standard 1.x Origine non compatibile Preview 6
Avviso emesso per la destinazione .NET 7 Origine non compatibile Disponibilità generale

Serializzazione

Titolo Tipo di modifica Versione introdotta
BinaryFormatter solleva sempre un'eccezione Cambiamento comportamentale Preview 6
Le proprietà Nullable di JsonDocument deserializzano in JsonValueKind.Null Cambiamento comportamentale Preview 1
it-IT: Il lettore di metadati System.Text.Json ora decodifica i nomi delle proprietà dei metadati Cambiamento comportamentale Disponibilità generale

WinForms

Titolo Tipo di modifica Versione introdotta
BindingSource.SortDescriptions non restituisce valori Null Cambiamento comportamentale Preview 1
Modifiche alle annotazioni di nullabilità Origine non compatibile Preview 1
ComponentDesigner.Initialize genera ArgumentNullException Modifiche comportamentali Preview 1
Indice di riga iniziale DataGridViewRowAccessibleObject.Name Cambiamento comportamentale Preview 1
Il supporto di IMsoComponent richiede il consenso esplicito Cambiamento comportamentale Preview 2
Nuovi analizzatori della sicurezza Origine non compatibile RC 1
Nessuna eccezione se DataGridView è Null Cambiamento comportamentale Preview 1
PictureBox genera eccezioni HttpClient Cambiamento comportamentale Preview 6
StatusStrip usa un renderer predefinito diverso Cambiamento comportamentale Disponibilità generale

WPF

Titolo Tipo di modifica Versione introdotta
GetXmlNamespaceMaps modifica del tipo Modifica comportamentale/Origine non compatibile Preview 3

Vedi anche