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