Modifiche che causano un'interruzione in .NET 6

Se si esegue la migrazione di un'app a .NET 6, le modifiche che causano un'interruzione elencate qui potrebbero influire sull'utente. Le modifiche vengono raggruppate in base all'area tecnologica, ad esempio ASP.NET Core o Windows Forms.

Questo articolo indica se ogni modifica che causa un'interruzione è compatibile a livello binario o compatibile a livello di origine:

  • Compatibile a livello binario: i file binari esistenti verranno caricati ed eseguiti correttamente senza ricompilare e il comportamento di runtime non cambierà.
  • Compatibile a livello di origine: il codice sorgente verrà compilato correttamente senza modifiche quando viene specificato come destinazione il nuovo runtime o quando si usa il nuovo SDK o il nuovo componente.

ASP.NET Core

Title Compatibile a livello binario Compatibile a livello di origine
ActionResult<T> imposta StatusCode su 200 ✔️
Metodo AddDataAnnotationsValidation reso obsoleto ✔️
Assembly rimossi da Microsoft.AspNetCore.App framework condiviso ✔️
Blazor: nome del parametro modificato nel metodo RequestImageFileAsync ✔️
Blazor: proprietà WebEventDescriptor.EventArgsType sostituita
Blazor: interoperabilità della matrice di byte ✔️
Changed MessagePack library in @microsoft/signalr-protocol-msgpack ✔️
La proprietà ClientCertificate non attiva la rinegoziazione per HttpSys ✔️
Metadati endpointName non impostati automaticamente ✔️
Identità: versione predefinita di Bootstrap dell'interfaccia utente modificata
Kestrel: attributi del messaggio di log modificati ✔️
Funzionalità Microsoft.AspNetCore.Http. suddivise ✔️
Middleware: il middleware di reindirizzamento HTTPS genera un'eccezione sulle porte HTTPS ambigue ✔️
Middleware: nuovo overload use ✔️
Ridenominazione minima dell'API in RC 1
Ridenominazione minima dell'API in RC 2
MVC non memorizza nel buffer i tipi IAsyncEnumerable quando si usa System.Text.Json ✔️
Annotazioni dei tipi di riferimento Nullable modificate ✔️
API obsolete e rimosse ✔️
PreserveCompilationContext non configurato per impostazione predefinita ✔️
Razor: il compilatore non produce più un assembly Views ✔️
Razor: modifiche all'ID di registrazione ✔️
Razor: RazorAPI del motore di contrassegnate come obsolete ✔️
SignalR: Client Java aggiornato a RxJava3 ✔️
I metodi TryParse e BindAsync vengono convalidati

Contenitori

Title Compatibile a livello binario Compatibile a livello di origine
Formattazione del logger della console predefinita nelle immagini del contenitore ✔️

Per informazioni su altre modifiche di rilievo per i contenitori in .NET 6, vedere Note sulla versione del contenitore .NET 6.

Principali librerie .NET

Title Compatibile a livello binario Compatibile a livello di origine
API obsolete con ID di diagnostica non predefiniti ✔️
Modifiche alle annotazioni dei tipi di riferimento nullable ✔️
Valutazione della stringa condizionale nei metodi di debug ✔️
Comportamento Environment.ProcessorCount in Windows ✔️
Comportamento di callback di EventSource ✔️ ✔️
File.Replace in Unix genera eccezioni in modo che corrispondano a Windows ✔️
FileStream blocca i file con blocco condiviso su Unix ✔️
FileStream non sincronizza più l'offset di file con il sistema operativo
Gli aggiornamenti di FileStream.Position dopo il completamento di ReadAsync o WriteAsync
Nuovi ID di diagnostica per le API obsolete ✔️
Nuovi overload del metodo System.Linq.Queryable ✔️
Versioni precedenti del framework eliminate dal pacchetto ✔️
Nomi dei parametri modificati ✔️
Nomi dei parametri nei tipi derivati da Stream ✔️
Letture parziali e zero byte in DeflateStream, GZipStream e CryptoStream ✔️
Impostare timestamp sul file di sola lettura in Windows ✔️
Precisione di analisi del formato numerico standard ✔️
Membri astratti statici nelle interfacce ✔️
Overload stringBuilder.Append e ordine di valutazione ✔️
API con nome sicuro generano platformNotSupportedException ✔️
System.Drawing.Common supportato solo in Windows
System.Security.SecurityContext è contrassegnato come obsoleto ✔️
Task.FromResult può restituire singleton ✔️
Eccezioni non gestite da un BackgroundService ✔️

Crittografia

Title Compatibile a livello binario Compatibile a livello di origine
Metodi CreateEncryptor generano un'eccezione per le dimensioni del feedback non corrette ✔️

Distribuzione

Title Compatibile a livello binario Compatibile a livello di origine
Percorso host x86 in Windows a 64 bit ✔️ ✔️

Entity Framework Core

Modifiche di rilievo in EF Core 6

Estensioni

Title Compatibile a livello binario Compatibile a livello di origine
Controlli AddProvider per i provider non Null ✔️
FileConfigurationProvider.Load genera un'eccezione InvalidDataException ✔️
Elementi XML ripetuti includono indice ✔️
La risoluzione di ServiceProvider eliminato genera un'eccezione ✔️

Globalizzazione

Title Compatibile a livello binario Compatibile a livello di origine
Creazione di impostazioni cultura e mapping di maiuscole e minuscole in modalità invariante di globalizzazione

Interop

Title Compatibile a livello binario Compatibile a livello di origine
Membri astratti statici nelle interfacce ✔️

Compilatore JIT

Title Compatibile a livello binario Compatibile a livello di origine
Argomenti di chiamata di Coerce in base a ECMA-335 ✔️ ✔️

Rete

Title Compatibile a livello binario Compatibile a livello di origine
Porta rimossa dal nome SPN per Kerberos e Negotiate ✔️
WebRequest, WebClient e ServicePoint sono obsoleti ✔️

SDK

Title Compatibile a livello binario Compatibile a livello di origine
L’opzione -p per dotnet run è deprecata ✔️
Codice C# nei modelli non supportati dalle versioni precedenti ✔️ ✔️
File EditorConfig inclusi in modo implicito ✔️
Generare apphost per macOS ✔️
Genera errore per i file duplicati nell'output di pubblicazione ✔️
GetTargetFrameworkProperties e GetNearestTargetFramework rimossi dal protocollo ProjectReference ✔️
Percorso di installazione per x64 emulato in Arm64 ✔️
MSBuild non supporta più la chiamata a GetType()
.NET non può essere installato nel percorso personalizzato ✔️ ✔️
OutputType non impostato automaticamente su WinExe ✔️
Publish ReadyToRun con --no-restore richiede modifiche ✔️
runtimeconfig.dev.json file non generato ✔️
avviso runtimeIdentifier se non è specificato autonomo ✔️
Manifesti degli strumenti nella cartella radice ✔️ ✔️
Requisiti della versione per .NET 6 SDK ✔️ ✔️
Il file .version include la versione di compilazione ✔️ ✔️
Scrivere assembly di riferimento in IntermediateOutputPath ✔️

Serializzazione

Title Compatibile a livello binario Compatibile a livello di origine
DataContractSerializer mantiene il segno durante la deserializzazione di -0 ✔️
Formato di serializzazione predefinito per TimeSpan ✔️
Serializzazione IAsyncEnumerable ✔️
Refactoring dell'API di generazione dell'origine JSON ✔️
JsonNumberHandlingAttribute nelle proprietà della raccolta ✔️
Nuovi overload del generatore di origine JsonSerializer ✔️

WinForms

Title Compatibile a livello binario Compatibile a livello di origine
I modelli C# usano bootstrap dell'applicazione ✔️
Le proprietà TableLayoutSettings selezionate generano un'eccezione InvalidEnumArgumentException ✔️
Le API correlate a DataGridView ora generano l'eccezione InvalidOperationException ✔️
I metodi ListViewGroupCollection generano nuovi InvalidOperationException ✔️
NotifyIcon.Lunghezza massima testo aumentata ✔️
ScaleControl chiamato solo quando necessario ✔️
Alcune API generano ArgumentNullException ✔️
TreeNodeCollection.Item genera un'eccezione se il nodo viene assegnato altrove ✔️

XML e XSLT

Title Compatibile a livello binario Compatibile a livello di origine
Comportamento XNodeReader.GetAttribute per indice non valido ✔️

Vedi anche