Partager via


Changements disruptifs dans .NET 10

Si vous migrez une application vers .NET 10, les changements importants répertoriés ici peuvent vous affecter. Les changements sont regroupés par domaine technologique, par exemple ASP.NET Core ou Windows Forms.

Cet article catégorise chaque changement radical comme incompatible binaire ou incompatible source, ou comme un changement de comportement :

  • incompatibilité binaire : lors de l’exécution sur le nouveau runtime ou le nouveau composant, les fichiers binaires existants peuvent rencontrer un changement perturbateur du comportement, tel qu’un échec de chargement ou d’exécution, et, le cas échéant, nécessiter une recompilation.

  • Source incompatible : lorsqu’il est recompilé à l’aide du nouveau kit de développement logiciel (SDK) ou du nouveau composant ou pour cibler le nouveau runtime, le code source existant peut nécessiter des modifications de source pour réussir la compilation.

  • Changement comportemental : le code et les fichiers binaires existants peuvent se comporter différemment lors de l’exécution. Si le nouveau comportement n’est pas souhaitable, le code existant doit être mis à jour et recompilé.

Note

Cet article est un travail en cours. Il ne s’agit pas d’une liste complète des changements cassants dans .NET 10.

ASP.NET Core

Titre Type de changement
Les redirections d'authentification par cookies sont désactivées pour les points de terminaison d'API connus Changements de comportement
Dépréciation de la méthode d’extension WithOpenApi Source non compatible
Diagnostics d’exception supprimés lorsque TryHandleAsync retourne true Changements de comportement
IActionContextAccessor et ActionContextAccessor sont obsolètes Source incompatible/changement de comportement
La propriété IncludeOpenAPIAnalyzers et les analyseurs d’API MVC sont déconseillés Source non compatible
IPNetwork et ForwardedHeadersOptions.KnownNetworks sont obsolètes Source non compatible
Package Microsoft.Extensions.ApiDescription.Client déconseillé Source non compatible
Razor la compilation du runtime est obsolète Source non compatible
WebHostBuilder, IWebHost et WebHost sont obsolètes Source non compatible

Containers

Titre Type de changement
images .NET par défaut utilisent Ubuntu Changements de comportement

Bibliothèques .NET Core

Titre Type de changement
Changement de comportement de ActivitySource.CreateActivity et ActivitySource.StartActivity Changements de comportement
Les chargements sans défaut Arm64 SVE nécessitent un masque Binaire/source incompatible
BufferedStream.WriteByte n’effectue plus de vidage implicite Changements de comportement
Obsoletions d'API avec des ID de diagnostic non par défaut Changements de comportement
Comportement de décalage cohérent dans les mathématiques génériques Changements de comportement
Propagation du contexte de trace par défaut mis à jour vers la norme W3C Changements de comportement
DriveInfo.DriveFormat retourne les types de système de fichiers Linux Changements de comportement
Annotation DynamicallyAccessedMembers supprimée du constructeur DefaultValueAttribute Binaire/source incompatible
Taille de struct explicite non autorisée avec InlineArray Incompatibilité binaire
FilePatternMatch.Stem a changé en valeur non nullable Source incompatible/changement de comportement
GnuTarEntry et PaxTarEntry n’incluent plus atime et ctime par défaut Changements de comportement
L’analyse LDAP DirectoryControl est maintenant plus stricte Changements de comportement
Normalisation des versions de MacCatalyst Changements de comportement
Le runtime .NET ne fournit plus de gestionnaires de signal d’arrêt par défaut Changements de comportement
System.Linq.AsyncEnumerable inclus dans les bibliothèques principales Source non compatible
Validation de l’argument Type.MakeGenericSignatureType Changements de comportement

Cryptography

Titre Type de changement
CompositeMLDsa mis à jour à la version préliminaire 08 Changements de comportement
CoseSigner.Key peut être null Changement incompatible de comportement/source
Membres MLDsa et SlhDsa 'SecretKey' renommés Source non compatible
Les primitives de chiffrement OpenSSL ne sont pas prises en charge sur macOS Changements de comportement
OpenSSL 1.1.1 ou version ultérieure requise sur Unix Changements de comportement
La validation de X500DistinguishedName est plus stricte Changements de comportement
Les paramètres de clé X509Certificate et PublicKey peuvent être null Changement incompatible de comportement/source
variable d’environnement renommée en DOTNET_OPENSSL_VERSION_OVERRIDE Changements de comportement

Entity Framework Core (infrastructure d'entité de base)

Changements cassants dans EF Core 10

Extensions

Titre Type de changement
BackgroundService exécute l’ensemble d’ExecuteAsync en tant que tâche Changements de comportement
Résoudre les problèmes dans GetKeyedService() et GetKeyedServices() avec AnyKey Changements de comportement
Valeurs Null conservées dans la configuration Changements de comportement
Message qui n’est plus dupliqué dans la sortie du journal de la console Changements de comportement
ProviderAliasAttribute déplacé vers l’assembly Microsoft.Extensions.Logging.Abstractions Source non compatible
Suppression de l'annotation DynamicallyAccessedMembers du code Microsoft.Extensions.Configuration trim-unsafe Incompatibilité binaire

Globalization

Titre Type de changement
Variable d'environnement renommée DOTNET_ICU_VERSION_OVERRIDE Changements de comportement

Outil d’installation

Titre Type de changement
dotnet.acquire API pour VS Code ne télécharge plus toujours la dernière version Changements de comportement

Interop

Titre Type de changement
Échec du cast de l'objet COM IDispatchEx en IReflect Changements de comportement
Les applications à fichier unique ne recherchent plus de bibliothèques natives dans le répertoire exécutable Changements de comportement
La spécification de DllImportSearchPath.AssemblyDirectory recherche uniquement dans le répertoire d'assembly Changements de comportement

Networking

Titre Type de changement
La prise en charge de HTTP/3 est désactivée par défaut avec PublishTrimmed Source non compatible
Diffusion en continu des réponses HTTP activées par défaut dans les clients HTTP du navigateur Changements de comportement
Uri limites de longueur supprimées Changements de comportement

Reflection

Titre Type de changement Version introduite
Annotations plus restreintes sur InvokeMember/FindMembers/DeclaredMembers Incompatibilité comportementale/source

SDK et MSBuild

Titre Type de changement
L’interface CLI --interactive .NET utilise par défaut true pour les scénarios utilisateur Changements de comportement
dotnet Les commandes CLI journalisent les données non pertinentes pour les commandes dans stderr Changements de comportement
L’empaquetage d’outils .NET crée des packages d’outils spécifiques à RuntimeIdentifier Changements de comportement
Configuration de charge de travail par défaut du mode « manifestes libres » en mode « jeux de charges de travail » Changements de comportement
La couverture du code EnableDynamicNativeInstrumentation a la valeur false par défaut Changements de comportement
dnx.ps1 fichier n’est plus inclus dans le Kit de développement logiciel (SDK) .NET Source non compatible
dotnet new sln par défaut au format de fichier SLNX Changements de comportement
dotnet package list effectue la restauration Changements de comportement
dotnet restore audite les packages transitifs Changements de comportement
dotnet tool install --local crée un manifeste par défaut Changements de comportement
dotnet watch logs vers stderr au lieu de stdout Changements de comportement
project.json non pris en charge dans dotnet restore Source non compatible
Prise en charge des empreintes digitales SHA-1 déconseillée dans dotnet nuget sign Changements de comportement
Le mécanisme d’échappement MSBUILDCUSTOMBUILDEVENTWARNING a été supprimé Changements de comportement
Gestion des ressources culturelles personnalisées avec MSBuild Changements de comportement
NU1510 est levé pour les références directes élaguées par NuGet Source non compatible
Les packages NuGet sans ressources runtime ne sont pas inclus dans deps.json Source non compatible
PackageReference sans version génère une erreur Changements de comportement
PrunePackageReference privatise les références directes pouvant être nettoyées Changements de comportement
Les avertissements HTTP ont été remplacés par des erreurs dans les versions dotnet package list et dotnet package search Changement incompatible de comportement/source
NUGET_ENABLE_ENHANCED_HTTP_RETRY variable d’environnement supprimée Changements de comportement
NuGet enregistre une erreur pour les ID de package non valides Changements de comportement
ToolCommandName non défini pour les packages non-outil Source non compatible

Sérialisation

Titre Type de changement
System.Text.Json vérifie les conflits de noms de propriété Changements de comportement
XmlSerializer n’ignore plus les propriétés marquées avec ObsoleteAttribute Changements de comportement

Windows Forms

Titre Type de changement
Éléments d’API obsolescents Source non compatible
Les applications référençant WPF et WinForms doivent lever l’ambiguïté des types MenuItem et ContextMenu Source non compatible
Paramètre renommé dans HtmlElement.InsertAdjacentElement Source non compatible
Troncature de l'image de la case à cocher TreeView Changements de comportement
StatusStrip utilise System RenderMode par défaut Changements de comportement
System.Drawing OutOfMemoryException a changé en ExternalException Changements de comportement

Windows Presentation Foundation (WPF)

Titre Type de changement
Les columnDefinitions vides et RowDefinitions ne sont pas autorisées Source non compatible
Une utilisation incorrecte de DynamicResource provoque un blocage de l’application Source incompatible/changement de comportement