Modifiche che causano un'interruzione in .NET 8

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

ASP.NET Core

Title Tipo di modifica
ConcurrencyLimiterMiddleware è obsoleto Origine non compatibile
Convertitori personalizzati per la serializzazione rimossa Modifiche funzionali
ISystemClock è obsoleto Origine non compatibile
API minime: i parametri IFormFile richiedono controlli anti-falsi Modifiche funzionali
Middleware di limitazione della frequenza richiede addRateLimiter Modifiche funzionali
Eventi del token di sicurezza restituiscono un JsonWebToken Modifiche funzionali
L'impostazione predefinita di TrimMode è completa per i progetti SDK Web Origine non compatibile

Contenitori

Title Tipo di modifica
Pacchetto 'ca-certificates' rimosso dalle immagini Alpine Binario incompatibile
Immagini del contenitore Debian aggiornate a Debian 12 Modifica binaria non compatibile/comportamentale
La porta predefinita ASP.NET Core è stata modificata in 8080 Modifiche funzionali
Pacchetto Kerberos rimosso dalle immagini Alpine e Debian Binario incompatibile
Pacchetto 'libintl' rimosso dalle immagini Alpine Modifiche funzionali
I tag contenitore multipiattaforma sono solo Linux Modifiche funzionali
Nuovo utente 'app' nelle immagini Linux Modifiche funzionali

Principali librerie .NET

Title Tipo di modifica
Nome dell'operazione di attività quando null Modifiche funzionali
Comportamento AnonymousPipeServerStream.Dispose Modifiche funzionali
Obsolescenze API con ID di diagnostica personalizzati Origine non compatibile
Mapping delle barre rovesciate nei percorsi di file Unix Modifiche funzionali
Metodi Base64.DecodeFromUtf8 ignorano gli spazi vuoti Modifiche funzionali
Supporto del tipo di enumerazione booleano rimosso Modifiche funzionali
Il formato Complex.ToString è stato modificato in ` <a; b> Modifiche funzionali
Enumerazione percorso directory corrente dell'unità Modifiche funzionali
Enumerable.Sum genera una nuova OverflowException per alcuni input Modifiche funzionali
Scritture FileStream quando la pipe viene chiusa Modifiche funzionali
FindSystemTimeZoneById non restituisce un nuovo oggetto Modifiche funzionali
GC. GetGeneration potrebbe restituire int32.MaxValue Modifiche funzionali
Comportamento di GetFolderPath in Unix Modifiche funzionali
GetSystemVersion non restituisce più ImageRuntimeVersion Modifiche funzionali
Annotazioni ITypeDescriptorContext nullable Origine non compatibile
Console legacy.ReadKey rimosso Modifiche funzionali
Generatori di metodi generano parametri con HasDefaultValue impostato su false Modifiche funzionali
ProcessStartInfo.WindowStyle rispettato quando UseShellExecute è false Modifiche funzionali
RuntimeIdentifier restituisce la piattaforma per cui è stato compilato il runtime Modifiche funzionali
Type.GetType genera un'eccezione per tutti i tipi di elemento non validi Modifiche funzionali

Crittografia

Title Tipo di modifica Presentazione
Dimensioni dei tag di autenticazione AesGcm in macOS Modifiche funzionali Preview 1
RSA. EncryptValue e RSA. DecryptValue obsoleto Origine non compatibile Preview 1

Distribuzione

Title Tipo di modifica
L’host determina gli asset specifici del RID Modifica binaria non compatibile/comportamentale
.NET Monitor include solo immagini senza distribuzione Modifiche funzionali
L'impostazione predefinita StripSymbols è true Modifiche funzionali

Entity Framework Core

Modificheche causano un'interruzione in EF Core 8

Estensioni

Title Tipo di modifica
Il comportamento di ActivatorUtilities.CreateInstance è coerente Modifiche funzionali
ActivatorUtilities.CreateInstance richiede un provider non Null Modifiche funzionali
ConfigurationBinder genera un'eccezione per il valore non corrispondente Modifiche funzionali
Il pacchetto ConfigurationManager non fa più riferimento a System.Security.Permissions Origine non compatibile
Il pacchetto DirectoryServices non fa più riferimento a System.Security.Permissions Origine non compatibile
Chiavi vuote aggiunte al dizionario dal gestore di associazione di configurazione Modifiche funzionali
HostApplicationBuilderSettings.Args rispettato dal ctor HostApplicationBuilder Modifiche funzionali
ManagementDateTimeConverter.ToDateTime restituisce un'ora locale Modifiche funzionali
Modifica della formattazione di System.Formats.Cbor DateTimeOffset Modifiche funzionali

Globalizzazione

Title Tipo di modifica
Convertitori di data e ora rispettano l'argomento delle impostazioni cultura Modifiche funzionali
L'impostazione predefinita TwoDigitYearMax è 2049 Modifiche funzionali

Interop

Title Tipo di modifica
CreateObjectFlags.Unwrap solo unwraps nell'istanza di destinazione Modifiche funzionali
I marshaller personalizzati richiedono membri aggiuntivi Origine non compatibile
L'API IDispatchImplAttribute viene rimossa Binario incompatibile
Costruttore predefinito pubblico implicito JSFunctionBinding rimosso Binario incompatibile
I tipi SafeHandle devono avere un costruttore pubblico Origine non compatibile

Rete

Title Tipo di modifica
SendFile genera notSupportedException per i socket senza connessione Modifiche funzionali
Le informazioni utente negli mailto: URI sono confrontate Modifiche funzionali

Riflessione

Title Tipo di modifica
IntPtr non più usato per i tipi di puntatore a funzione Modifiche funzionali

SDK

Title Tipo di modifica
L'output della console CLI usa UTF-8 Modifica comportamentale/Origine e file binari incompatibili
Codifica della console non UTF-8 dopo il completamento Modifica comportamentale/Binario non compatibile
Per impostazione predefinita, i contenitori usano il tag 'latest' Modifiche funzionali
'dotnet pack' usa la configurazione della Release Modifica comportamentale/Origine non compatibile
'dotnet publish' usa la configurazione Release Modifica comportamentale/Origine non compatibile
Output duplicato per -getItem, -getProperty e -getTargetResult Modifiche funzionali
using implicito per System.Net.Http non più aggiunto Modifica comportamentale/Origine non compatibile
Eventi di compilazione derivati personalizzati di MSBuild deprecati Modifiche funzionali
MSBuild rispetta DOTNET_CLI_UI_LANGUAGE Modifiche funzionali
App specifiche del runtime non autonome Origine/file binario non compatibile
L'opzione --arch non implica l'autonomia Modifiche funzionali
'dotnet restore' genera avvisi di vulnerabilità di sicurezza Modifiche funzionali
SDK usa un grafico RID più piccolo Modifica comportamentale/Origine non compatibile
Impostare DebugSymbols su falso disabilita la generazione di PDB Modifiche funzionali
Collegamento all'origine incluso in .NET SDK Origine non compatibile
Il taglio non può essere usato con .NET Standard o .NET Framework Modifiche funzionali
Pacchetti non elencati non installati per impostazione predefinita per gli strumenti .NET Modifiche funzionali
File .user importato nelle build esterne Modifiche funzionali
Requisiti della versione per .NET 8 SDK Origine non compatibile

Serializzazione

Title Tipo di modifica
BinaryFormatter disabilitato per la maggior parte dei progetti Modifiche funzionali
I progetti PublishedTrimmed hanno esito negativo di serializzazione basata su reflection Modifiche funzionali
Il deserializzatore basato su reflection risolve i metadati Modifiche funzionali

WinForms

Title Tipo di modifica
Modifiche al layout di ancoraggio Modifiche funzionali
Certificati verificati prima di caricare immagini remote in PictureBox Modifiche funzionali
DateTimePicker.Text è una stringa vuota Modifiche funzionali
DefaultValueAttribute rimosso da alcune proprietà Modifiche funzionali
ctor ExceptionCollection genera l'eccezione ArgumentException Modifiche funzionali
Ridimensionamento dei moduli in base a AutoScaleMode Modifiche funzionali
Il valore predefinito ImageList.ColorDepth è Depth32Bit Modifiche funzionali
System.Windows.Extensions non fa riferimento a System.Drawing.Common Origine non compatibile
TableLayoutStyleCollection genera argumentException Modifiche funzionali
I moduli di primo livello modificano le dimensioni minime e massime in punti per pollice Modifiche funzionali
L’obsolescenza WFDEV002 è ora un errore Origine non compatibile

Vedi anche