Condividi tramite


Modifiche di rottura in .NET 8

Se si esegue la migrazione di un'app a .NET 8, le modifiche incompatibili elencate qui potrebbero influenzarti. 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 vengono eseguiti su un nuovo runtime o componente, i file binari esistenti possono riscontrare una modifica nei comportamenti che potrebbe interromperne il funzionamento, come il mancato caricamento o esecuzione; in tal caso, è necessaria 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 comportamentale : 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

Consulta Cambiamenti significativi in ASP.NET Core 8.

Contenitori

Titolo Tipo di modifica
Pacchetto 'ca-certificates' rimosso dalle immagini Alpine Incompatibile a livello binario
Immagini del contenitore Debian aggiornate a Debian 12 Modifica binaria non compatibile/comportamentale
La porta predefinita ASP.NET Core è stata modificata in 8080 Cambiamento comportamentale
Pacchetto Kerberos rimosso dalle immagini Alpine e Debian Incompatibilità binaria
Pacchetto 'libintl' rimosso dalle immagini Alpine Cambiamento comportamentale
I tag multipiattaforma per i contenitori sono disponibili solo per Linux Cambiamento comportamentale
Nuovo utente 'app' nelle immagini Linux Cambiamento comportamentale

Principali librerie .NET

Titolo Tipo di modifica
Nome dell'operazione di attività quando null Modifiche comportamentali
Comportamento AnonymousPipeServerStream.Dispose Cambiamento comportamentale
Obsolescenze API con ID di diagnostica personalizzati Origine non compatibile
Mapping delle barre rovesciate nei percorsi di file Unix Cambiamento comportamentale
Metodi Base64.DecodeFromUtf8 ignorano gli spazi vuoti Modifica comportamentale
Supporto per i tipi di enumerazione basati su Boolean rimosso Cambiamento comportamentale
Il formato Complex.ToString è stato modificato in ` <a; b> Cambiamento comportamentale
Enumerazione del percorso della directory corrente dell’unità Cambiamento comportamentale
Enumerable.Sum genera una nuova OverflowException per alcuni input Cambiamento comportamentale
FileStream scrive quando la pipe viene chiusa Cambiamento comportamentale
FindSystemTimeZoneById non restituisce un nuovo oggetto Cambiamento comportamentale
GC.GetGeneration potrebbe restituire Int32.MaxValue Cambiamento comportamentale
Comportamento di GetFolderPath in Unix Cambiamento comportamentale
GetSystemVersion non restituisce più ImageRuntimeVersion Cambiamento comportamentale
Annotazioni ITypeDescriptorContext nullable Origine non compatibile
API LDAP non disponibili in .NET Standard / .NET Framework Incompatibile a livello di binario
Legacy Console.ReadKey rimosso Cambiamento comportamentale
Generatori di metodi generano parametri con HasDefaultValue impostato su false Cambiamento comportamentale
Gli URI della parte del pacchetto vengono ora confrontati senza distinzione tra maiuscole e minuscole in System.IO.Packaging Cambiamento comportamentale
ProcessStartInfo.WindowStyle viene rispettato quando UseShellExecute è false Cambiamento comportamentale
RuntimeIdentifier restituisce la piattaforma per cui è stato compilato il runtime Cambiamento comportamentale
Type.GetType genera un'eccezione per tutti i tipi di elemento non validi Cambiamento comportamentale

Crittografia

Titolo Tipo di modifica Presentazione
Dimensioni dei tag di autenticazione AesGcm in macOS Cambiamento comportamentale Anteprima 1
RSA.EncryptValue e RSA.DecryptValue obsoleti Origine non compatibile Anteprima 1

Distribuzione

Titolo Tipo di modifica
L’host determina gli asset specifici del RID Modifica binaria non compatibile/comportamentale
.NET Monitor include solo immagini senza distribuzione Cambiamento comportamentale
I pacchetti .NET per openSUSE e SLES dipendono da OpenSSL 3.x Modifica comportamentale
L'impostazione predefinita StripSymbols è true Cambiamento comportamentale

Entity Framework Core (un framework ORM per la gestione dei database nello sviluppo software)

Consulta Modifiche di rilievo in EF Core 8.

Estensioni

Titolo Tipo di modifica
Il comportamento di ActivatorUtilities.CreateInstance è coerente Modifica comportamentale
ActivatorUtilities.CreateInstance richiede un provider non Null Modifiche comportamentali
ConfigurationBinder ignora automaticamente gli elementi di matrice non validi Cambiamento comportamentale
ConfigurationBinder lancia un'eccezione per un valore non corrispondente Cambiamento comportamentale
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 binder di configurazione Cambiamento comportamentale
FromKeyedServicesAttribute.Key può essere Null Origine non compatibile
HostApplicationBuilderSettings.Args rispettato dal ctor HostApplicationBuilder Cambiamento comportamentale
ManagementDateTimeConverter.ToDateTime restituisce un'ora locale Cambiamento comportamentale
Modifica della formattazione di System.Formats.Cbor DateTimeOffset Cambiamento comportamentale

Globalizzazione

Titolo Tipo di modifica
I convertitori di data e ora rispettano l'argomento culturale Modifica comportamentale
L'impostazione predefinita TwoDigitYearMax è 2049 Cambiamento comportamentale

Interoperabilità

Titolo Tipo di modifica
CreateObjectFlags.Unwrap effettua un unwrap solo sull'istanza di destinazione Cambiamento comportamentale
I gestori di marshaling personalizzati richiedono membri aggiuntivi Origine non compatibile
L'API IDispatchImplAttribute viene rimossa Incompatibile a livello binario
Costruttore predefinito pubblico implicito JSFunctionBinding rimosso Incompatibilità binaria
I tipi SafeHandle devono avere un costruttore pubblico Origine non compatibile
La risoluzione delle librerie native su Linux non utilizza più netcoredeps Cambiamenti comportamentali

Rete

Titolo Tipo di modifica
SendFile genera notSupportedException per i socket senza connessione Cambiamento comportamentale
Le informazioni utente negli mailto: URI sono confrontate Cambiamento comportamentale

Riflessione

Titolo Tipo di modifica
IntPtr non più usato per i tipi di puntatore a funzione Cambiamenti comportamentali

SDK

Titolo Tipo di modifica
L'output della console CLI usa UTF-8 Modifica comportamentale/Incompatibilità del codice sorgente e dei file binari
Codifica della console non UTF-8 dopo il completamento Modifica comportamentale/Binario non compatibile
Per impostazione predefinita, i contenitori usano il tag 'latest' Cambiamento comportamentale
'dotnet pack' usa la configurazione di 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 comportamentali
Comportamento implicito per System.Net.Http non viene più aggiunto Modifica comportamentale/Origine non compatibile
Eventi di compilazione derivati personalizzati di MSBuild deprecati Modifiche comportamentali
MSBuild rispetta DOTNET_CLI_UI_LANGUAGE Modifiche comportamentali
App specifiche del runtime non autonome Origine/file binario non compatibile
L'opzione --arch non implica l'autonomia Modifiche comportamentali
'dotnet restore' genera avvisi di vulnerabilità di sicurezza Modifiche comportamentali
'dotnet list package' avvisa se l'origine non fornisce dati di vulnerabilità Modifiche comportamentali
SDK usa un grafico RID più piccolo Modifica comportamentale/Origine non compatibile
Impostare DebugSymbols su falso disabilita la generazione di PDB Modifiche comportamentali
Source Link incluso nel .NET SDK Origine non compatibile
Il trimming non può essere utilizzato con .NET Standard o .NET Framework Modifiche comportamentali
Pacchetti non elencati non installati per impostazione predefinita per gli strumenti .NET Modifiche comportamentali
File .user importato nelle build esterne Modifiche comportamentali
Requisiti della versione per .NET 8 SDK Origine non compatibile

Serializzazione

Titolo Tipo di modifica
BinaryFormatter disabilitato per la maggior parte dei progetti Modifiche comportamentali
I progetti PublishedTrimmed falliscono nella serializzazione basata su reflection Modifiche comportamentali
Il deserializzatore basato su reflection risolve i metadati in modo anticipato Modifiche comportamentali

WinForms

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

Vedi anche