Condividi tramite


Modifiche di rilievo in .NET 10

Se si esegue la migrazione di un'app a .NET 10, le modifiche di rilievo 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:

  • Binari non compatibili: quando vengono eseguiti sul nuovo runtime o componente, i file binari esistenti possono riscontrare una modifica che comporta un cambiamento radicale nel comportamento, come un errore di caricamento o esecuzione, e, in tal caso, richiedono 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.

Annotazioni

Questo articolo è un lavoro in corso. Non è un elenco completo dei cambiamenti critici in .NET 10.

ASP.NET Core

Titolo Tipo di modifica
Reindirizzamenti di accesso ai cookie disabilitati per gli endpoint API noti Cambiamento comportamentale
Deprecazione del metodo di estensione WithOpenApi Origine non compatibile
Diagnostica delle eccezioni eliminata quando TryHandleAsync restituisce true Cambiamento comportamentale
IActionContextAccessor e ActionContextAccessor sono obsoleti Modifica incompatibile/comportamentale della sorgente
La proprietà IncludeOpenAPIAnalyzers e gli analizzatori API MVC sono deprecati Origine non compatibile
IPNetwork e ForwardedHeadersOptions.KnownNetworks sono obsoleti Origine non compatibile
Pacchetto Microsoft.Extensions.ApiDescription.Client deprecato Origine non compatibile
Razor la compilazione di runtime è obsoleta Origine non compatibile
WebHostBuilder, IWebHost e WebHost sono obsoleti Origine non compatibile

Containers

Titolo Tipo di modifica
immagini .NET predefinite usano Ubuntu Cambiamento comportamentale

Principali librerie .NET

Titolo Tipo di modifica
Comportamento modificato di ActivitySource.CreateActivity e ActivitySource.StartActivity Cambiamento comportamentale
I caricamenti non predefiniti di Arm64 SVE richiedono la maschera File binario/origine non compatibile
BufferedStream.WriteByte non esegue più lo scaricamento implicito Cambiamento comportamentale
C# 14 risoluzione dell'overload con parametri span Cambiamento comportamentale
Comportamento coerente dello spostamento nella matematica generica Cambiamento comportamentale
Propagatore di contesto di traccia predefinito aggiornato allo standard W3C Cambiamento comportamentale
DriveInfo.DriveFormat restituisce tipi di file system Linux Cambiamento comportamentale
Annotazione DynamicallyAccessedMembers rimossa dal ctor DefaultValueAttribute File binario/origine non compatibile
Struct esplicito Dimensioni non consentite con InlineArray Incompatibilità binaria
FilePatternMatch.Stem modificato in non nullable Modifica incompatibile/comportamentale della sorgente
GnuTarEntry e PaxTarEntry non includono più atime e ctime per impostazione predefinita Cambiamento comportamentale
l'analisi LDAP DirectoryControl è ora più rigorosa Cambiamento comportamentale
Normalizzazione della versione MacCatalyst Cambiamento comportamentale
Il runtime .NET non fornisce più gestori di segnale di terminazione predefiniti Cambiamento comportamentale
System.Linq.AsyncEnumerable incluso nelle librerie di base Origine non compatibile
Convalida dell'argomento Type.MakeGenericSignatureType Cambiamento comportamentale

Crittografia

Titolo Tipo di modifica
CompositeMLDsa aggiornato alla bozza 08 Cambiamento comportamentale
CoseSigner.Key può essere null Modifica non compatibile del comportamento/della sorgente
Membri MLDsa e SlhDsa 'SecretKey' rinominati Origine non compatibile
Le primitive di crittografia OpenSSL non sono supportate in macOS Cambiamento comportamentale
OpenSSL 1.1.1 o versione successiva obbligatoria in Unix Cambiamento comportamentale
La validazione di X500DistinguishedName è stata resa più restrittiva Cambiamento comportamentale
I parametri chiave X509Certificate e PublicKey possono essere null Modifica non compatibile del comportamento/della sorgente
Variabile di ambiente rinominata in DOTNET_OPENSSL_VERSION_OVERRIDE Cambiamento comportamentale

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

Modifiche di rilievo in EF Core 10

Extensions

Titolo Tipo di modifica
BackgroundService esegue tutte le operazioni ExecuteAsync come attività Cambiamento comportamentale
Risolvere i problemi in GetKeyedService() e GetKeyedServices() con AnyKey Cambiamento comportamentale
Valori Null mantenuti nella configurazione Cambiamento comportamentale
Messaggio non più duplicato nell'output del log della console Cambiamento comportamentale
ProviderAliasAttribute è stato spostato nell'assembly Microsoft.Extensions.Logging.Abstractions Origine non compatibile
Rimossa l'annotazione DynamicallyAccessedMembers dal codice Trim-unsafe Microsoft.Extensions.Configuration Incompatibilità binaria

Globalization

Titolo Tipo di modifica
Variabile di ambiente rinominata in DOTNET_ICU_VERSION_OVERRIDE Cambiamento comportamentale

Strumento di installazione

Titolo Tipo di modifica
dotnet.acquire API per VS Code non sempre scarica più la versione più recente Cambiamento comportamentale

Interoperabilità

Titolo Tipo di modifica
Il cast dell'oggetto COM IDispatchEx in IReflect ha esito negativo Cambiamento comportamentale
Le app a file singolo non cercano più librerie native nella directory eseguibile Cambiamento comportamentale
Se si specifica DllImportSearchPath.AssemblyDirectory, viene eseguita solo la ricerca nella directory dell'assembly Cambiamento comportamentale

Rete

Titolo Tipo di modifica
Supporto HTTP/3 disabilitato per impostazione predefinita con PublishTrimmed Origine non compatibile
Lo streaming delle risposte HTTP è abilitato per impostazione predefinita nei client del browser HTTP Cambiamento comportamentale
Uri limiti di lunghezza rimossi Cambiamento comportamentale

Riflessione

Titolo Tipo di modifica Versione introdotta
Annotazioni più limitate in InvokeMember/FindMembers/DeclaredMembers Comportamento/origine non compatibile

SDK e MSBuild

Titolo Tipo di modifica
La CLI di .NET --interactive è predefinita per gli scenari utentetrue Cambiamento comportamentale
dotnet I comandi dell'interfaccia della riga di comando registrano dati non rilevanti per i comandi in stderr Cambiamento comportamentale
La creazione di pacchetti di strumenti .NET crea pacchetti di strumenti specifici di RuntimeIdentifier Cambiamento comportamentale
Configurazione predefinita del carico di lavoro da "manifesti separati" alla modalità "set di carico di lavoro" Cambiamento comportamentale
Il valore predefinito di Code coverage EnableDynamicNativeInstrumentation è false Cambiamento comportamentale
dnx.ps1 file non è più incluso in .NET SDK Origine non compatibile
dotnet new sln per impostazione predefinita il formato di file SLNX Cambiamento comportamentale
dotnet package list esegue il ripristino Cambiamento comportamentale
dotnet restore controlla i pacchetti transitivi Cambiamento comportamentale
dotnet tool install --local crea il manifesto per impostazione predefinita Cambiamento comportamentale
dotnet watch i log su stderr invece che su stdout Cambiamento comportamentale
project.json non supportato in dotnet restore Origine non compatibile
Supporto delle impronte digitali SHA-1 deprecato in dotnet nuget sign Cambiamento comportamentale
valvola di sfogo MSBUILDCUSTOMBUILDEVENTWARNING rimossa Cambiamento comportamentale
Gestione delle risorse delle culture personalizzate di MSBuild Cambiamento comportamentale
NU1510 viene generato per i riferimenti diretti eliminati da NuGet Origine non compatibile
I pacchetti NuGet senza asset di runtime non sono inclusi in deps.json Origine non compatibile
PackageReference senza una versione genera un errore Cambiamento comportamentale
PrunePackageReference privatizza i riferimenti prunable diretti Cambiamento comportamentale
Avvisi HTTP promossi a errori in dotnet package list e dotnet package search Modifica non compatibile del comportamento/della sorgente
La variabile di ambiente NUGET_ENABLE_ENHANCED_HTTP_RETRY è stata rimossa Cambiamento comportamentale
NuGet registra un errore per gli ID pacchetto non validi Cambiamento comportamentale
ToolCommandName non impostato per i pacchetti che non sono strumenti Origine non compatibile

Serializzazione

Titolo Tipo di modifica
System.Text.Json verifica la presenza di conflitti di nomi di proprietà Cambiamento comportamentale
XmlSerializer non ignora più le proprietà contrassegnate con ObsoleteAttribute Cambiamento comportamentale

Windows Forms

Titolo Tipo di modifica
Obsolescenze delle API Origine non compatibile
Applicazioni che fanno riferimento sia a WPF che a WinForms devono disambiguare i tipi MenuItem e ContextMenu Origine non compatibile
Parametro rinominato in HtmlElement.InsertAdjacentElement Origine non compatibile
troncamento dell'immagine della casella di controllo di TreeView Cambiamento comportamentale
StatusStrip usa System RenderMode per impostazione predefinita Cambiamento comportamentale
System.Drawing OutOfMemoryException è stato modificato in ExternalException Cambiamento comportamentale

WPF (Windows Presentation Foundation)

Titolo Tipo di modifica
ColumnDefinitions e RowDefinitions vuoti non sono consentiti Origine non compatibile
L'utilizzo non corretto di DynamicResource causa l'arresto anomalo dell'applicazione Modifica incompatibile/comportamentale della sorgente