Modifiche che causano un'interruzione in .NET 5

Se si esegue la migrazione di un'app a .NET 5, 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 crittografia.

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
Le app ASP.NET Core deserializzano i numeri tra virgolette ✔️
API AzureAD.UI e AzureADB2C.UI obsolete ✔️
I metodi di serializzazione BinaryFormatter sono obsoleti ✔️
La risorsa nel routing dell’endpoint è HttpContext ✔️
Pacchetti di integrazione di Azure con prefisso Microsoft rimossi ✔️
Blazor: logica di precedenza della route modificata nelle app Blazor ✔️
Blazor: aggiornamento del supporto del browser ✔️ ✔️
Blazor: spazi vuoti insignificanti tagliati dal compilatore ✔️
Blazor: i tipi JSObjectReference e JSInProcessObjectReference sono interni ✔️
Blazor: framework di destinazione dei pacchetti NuGet modificati ✔️
Blazor: funzionalità ProtectedBrowserStorage spostata nel framework condiviso ✔️
Blazor: campi pubblici di sola lettura RenderTreeFrame sono ora proprietà ✔️
Blazor: logica di convalida aggiornata per gli asset Web statici ✔️
API di crittografia non supportate nel browser ✔️
Estensioni: modifiche ai riferimenti relativi ai pacchetti ✔️
I tipi Kestrel e IIS BadHttpRequestException sono obsoleti ✔️
Istanze di HttpClient create da codici di stato integer del log IHttpClientFactory ✔️
HttpSys: rinegoziazione del certificato client disabilitata per impostazione predefinita ✔️
IIS: le stringhe di query del middleware UrlRewrite vengono mantenute ✔️
Kestrel: modifiche alla configurazione rilevate per impostazione predefinita ✔️
Kestrel: versioni predefinite del protocollo TLS supportate modificate ✔️
Kestrel: HTTP/2 disabilitato su TLS in versioni di Windows incompatibili ✔️ ✔️
Kestrel: trasporto Libuv contrassegnato come obsoleto ✔️
Proprietà obsolete in ConsoleLoggerOptions ✔️
Classe ResourceManagerWithCultureStringLocalizer e membro dell'interfaccia WithCulture rimossi ✔️
API Pubternal rimosse ✔️
Costruttore obsoleto rimosso nel middleware di localizzazione della richiesta ✔️
Middleware: pagina di errore del database contrassegnata come obsoleta ✔️
Il middleware del gestore di eccezioni genera un'eccezione originale ✔️ ✔️
ObjectModelValidator chiama un nuovo overload di Validate ✔️
Codifica del nome del cookie rimossa ✔️
Versioni del pacchetto NuGet IdentityModel aggiornate ✔️
SignalR: tipo di opzioni del protocollo hub MessagePack modificato ✔️
SignalR: protocollo hub MessagePack spostato ✔️
Metodi UseSignalR e UseConnections rimossi ✔️
Tipo di contenuto CSV modificato nel valore conforme agli standard ✔️

Analisi codice

Title Compatibile a livello binario Compatibile a livello di origine
Avviso CA1416 ✔️
Avviso CA1417 ✔️
Avviso CA1831 ✔️
Avviso CA2013 ✔️
Avviso CA2014 ✔️
Avviso CA2015 ✔️
Avviso CA2200 ✔️
Avviso CA2247 ✔️

Principali librerie .NET

Title Compatibile a livello binario Compatibile a livello di origine
Modifiche dell'API correlate all'assembly per la pubblicazione su file singolo ✔️
I metodi di serializzazione BinaryFormatter sono obsoleti ✔️
Le API di sicurezza dall'accesso di codice sono obsolete ✔️
CreateCounterSetInstance genera InvalidOperationException ✔️
Il valore predefinito di ActivityIdFormat è W3C ✔️
Environment.OSVersion restituisce la versione corretta ✔️
Il valore di FrameworkDescription è .NET e non .NET Core ✔️
API GAC obsolete ✔️
Controlli IsSupported intrinseci dell'hardware ✔️
IntPtr e UIntPtr implementano IFormattable ✔️
LastIndexOf gestisce stringhe di ricerca vuote ✔️
Percorsi URI con caratteri non ASCII in Unix ✔️
API obsolete con ID di diagnostica non predefiniti ✔️
Proprietà obsolete in ConsoleLoggerOptions ✔️
Complessità di LINQ OrderBy.First ✔️
Attributi OSPlatform rinominati o rimossi ✔️
Pacchetto Microsoft.DotNet.PlatformAbstractions rimosso ✔️
PrincipalPermissionAttribute obsoleto ✔️
Modifiche a nomi di parametri dalle versioni di anteprima ✔️
Modifiche a nomi di parametri negli assembly di riferimento ✔️
API di comunicazione remota obsolete ✔️
Ordine dell'elenco Activity.Tags invertito ✔️
I metodi di confronto SSE e SSE2 gestiscono NaN ✔️
Thread.Abort obsoleto ✔️
Riconoscimento URI dei percorsi UNC in Unix ✔️
I percorsi del codice UTF-7 sono obsoleti ✔️
Modifica del comportamento per Vector2.Lerp e Vector4.Lerp ✔️
Vector<T> genera NotSupportedException ✔️

Crittografia

Title Compatibile a livello binario Compatibile a livello di origine
API di crittografia non supportate nel browser ✔️
Cryptography.Oid solo per inizializzazione ✔️
Pacchetti di crittografia TLS predefiniti in Linux ✔️
Gli overload Create() sulle astrazioni crittografiche sono obsoleti ✔️
Valore predefinito di FeedbackSize modificato ✔️

Entity Framework Core

Modifica che causa un'interruzione in EF Core 5.0

Globalizzazione

Title Compatibile a livello binario Compatibile a livello di origine
Usare le librerie ICU in Windows ✔️
StringInfo e TextElementEnumerator sono conformi a UAX29 ✔️
Categoria Unicode modificata per i caratteri Latin-1 ✔️
Valori di TextInfo.ListSeparator modificati ✔️

Interop

Title Compatibile a livello binario Compatibile a livello di origine
Supporto per WinRT rimosso ✔️
Il cast di RCW a InterfaceIsIInspectable genera un'eccezione ✔️
Nessun probing di suffisso A/W su piattaforme non Windows ✔️

Rete

Title Compatibile a livello binario Compatibile a livello di origine
Gestione dei percorsi dei cookie conforme a RFC 6265 ✔️
LocalEndPoint viene aggiornato dopo la chiamata di SendToAsync ✔️
MulticastOption.Group non accetta valori Null ✔️
I flussi consentono operazioni Begin successive ✔️
WinHttpHandler rimosso dal runtime .NET ✔️

SDK

Title Compatibile a livello binario Compatibile a livello di origine
File Directory.Packages.props importati per impostazione predefinita ✔️
Errore generato quando il progetto eseguibile fa riferimento a un file eseguibile non corrispondente ✔️
FrameworkReference sostituito con WindowsSdkPackageVersion per Windows SDK ✔️
Simbolo del preprocessore NETCOREAPP3_1 non definito ✔️
OutputType impostato su WinExe ✔️
Modifica funzionale di PublishDepsFilePath ✔️
Modifica di TargetFramework da netcoreapp a net ✔️
Le app WinForms e WPF usano Microsoft.NET.Sdk ✔️

Sicurezza

Title Compatibile a livello binario Compatibile a livello di origine
Le API di sicurezza dall'accesso di codice sono obsolete ✔️
PrincipalPermissionAttribute obsoleto ✔️
I percorsi del codice UTF-7 sono obsoleti ✔️

Serializzazione

Title Compatibile a livello binario Compatibile a livello di origine
BinaryFormatter.Deserialize riesegue il wrapping delle eccezioni ✔️
JsonSerializer.Deserialize richiede una stringa a carattere singolo ✔️
Le app ASP.NET Core deserializzano i numeri tra virgolette ✔️
JsonSerializer.Serialize genera ArgumentNullException ✔️
Costruttori non pubblici senza parametri non usati per la deserializzazione ✔️
Opzioni rispettate durante la serializzazione di coppie chiave-valore ✔️

WinForms

Title Compatibile a livello binario Compatibile a livello di origine
Il codice nativo non può accedere agli oggetti Windows Form ✔️
OutputType impostato su WinExe ✔️
DataGridView non reimposta i tipi di carattere personalizzati ✔️
I metodi generano ArgumentException ✔️
I metodi generano ArgumentNullException ✔️
Le proprietà generano ArgumentOutOfRangeException ✔️
TextFormatFlags.ModifyString obsoleto ✔️
Le API DataGridView generano InvalidOperationException ✔️
Le app WinForms usano Microsoft.NET.Sdk ✔️
Controlli della barra di stato rimossi ✔️

WPF

Title Compatibile a livello binario Compatibile a livello di origine
OutputType impostato su WinExe ✔️
Le app WPF usano Microsoft.NET.Sdk ✔️

Vedi anche