Changements cassants dans .NET 7

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

Cet article indique si chaque changement cassant est compatible binaire ou compatible avec la source :

  • Compatible binaire : les fichiers binaires existants se chargent et s’exécutent correctement sans recompilation et le comportement d’exécution ne change pas.
  • Compatible avec la source : le code source se compile correctement sans changement lors du ciblage du nouveau runtime ou de l’utilisation du nouveau Kit de développement logiciel (SDK) ou composant.

ASP.NET Core

Titre Compatible binaire Compatible avec la source
Les actions du contrôleur d’API tentent de déduire des paramètres à partir de l’injection de dépendances ✔️
Priorité des variables d’environnement préfixées avec ASPNET ✔️ ✔️
AuthenticateAsync pour les fournisseurs d’authentification à distance ✔️
Authentification dans les applications WebAssembly ✔️
Schéma d’authentification par défaut ✔️
ID d’événement modifiés pour certains messages de journal Microsoft.AspNetCore.Mvc.Core ✔️
Points de terminaison de fichier de secours ✔️
IHubClients et IHubCallerClients masquent les membres ✔️
Kestrel : suppression de la liaison HTTPS par défaut ✔️
Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv et libuv.dll supprimés
Microsoft.Data.SqlClient mis à jour vers 4.0.1 ✔️
Le middleware ne reporte plus vers le point de terminaison avec le délégué de demande Null ✔️
Modification de la détection d’un corps vide par MVC dans la liaison de modèle ✔️
Modifications de l’API de mise en cache de sortie
Les méthodes SignalR Hub essaient de résoudre les paramètres à partir de l’ID ✔️

Bibliothèques .NET Core

Titre Compatible binaire Compatible avec la source
Obsolescence d’API avec ID de diagnostics par défaut ✔️
Obsolescence d’API avec ID de diagnostics autres que ceux par défaut ✔️
Les API de sérialisation de BinaryFormatter produisent des erreurs du compilateur ✔️
BrotliStream n’autorise plus les valeurs CompressionLevel non définies ✔️
Projets C++/CLI dans Visual Studio ✔️
Modifications apportées aux exceptions de l’API d’appel de réflexion ✔️
Assembly pouvant être collecté dans AssemblyLoadContext ne pouvant pas être collecté ✔️
Modification de la précision des méthodes d’addition DateTime ✔️ ✔️
Changement de comportement de la méthode Equals pour NaN ✔️
Comportement de rappel EventSource ✔️ ✔️
Contrainte de type générique sur PatternContext<T>
Stratégie FileStream héritée supprimée ✔️
Prise en charge des bibliothèques pour les frameworks plus anciens
Précision maximale pour les chaînes de format numérique ✔️
Modèles regex avec plages corrigées ✔️ ✔️
SerializationFormat.Binary est obsolète
Commutateur de configuration System.Drawing.Common supprimé ✔️ ✔️
Package NuGet System.Runtime.CompilerServices.Unsafe ✔️ ✔️
Champs temporels sur les liens symboliques ✔️
Suivi des entrées de cache liées ✔️
Valider CompressionLevel pour BrotliStream ✔️

Configuration

Titre Compatible binaire Compatible avec la source
Entrée System.diagnostics dans app.config ✔️

Chiffrement

Titre Compatible binaire Compatible avec la source
Absence de désenveloppage pour le déchiffrement EnvelopedCms ✔️
Temps de vérification X509ChainPolicy dynamique ✔️
Analyse par X500DistinguishedName des noms conviviaux ✔️

Déploiement

Titre Compatible binaire Compatible avec la source
Tous les assemblys découpés par défaut ✔️
La recherche à plusieurs niveaux est désactivée ✔️
Chemin d’hôte x86 sur Windows 64 bits ✔️ ✔️
TrimmerDefaultAction est déconseillé ✔️

Entity Framework Core

Changements cassants dans EF Core 7

Extensions

Titre Compatible binaire Compatible avec la source
Configuration de liaison au dictionnaire étend les valeurs ✔️ ✔️
ContentRootPath pour les applications lancées par Windows Shell ✔️
Préfixes des variables d’environnement ✔️

Globalisation

Titre Compatible binaire Compatible avec la source
Les API de globalisation utilisent des bibliothèques ICU sur Windows Server ✔️

Interop

Titre Compatible binaire Compatible avec la source
RuntimeInformation.OSArchitecture sous émulation ✔️

.NET MAUI

Titre Compatible binaire Compatible avec la source
Les constructeurs acceptent l’interface de base au lieu du type concret ✔️
Méthodes d’assistance de direction de flux supprimées
Nouveau paramètre UpdateBackground ✔️
Propriété ScrollToRequest renommée
Certaines API Windows sont supprimées

Mise en réseau

Titre Compatible binaire Compatible avec la source
La valeur par défaut d’AllowRenegotiation est false
Charges utiles ping personnalisées sur Linux ✔️
Les méthodes Socket.End ne lèvent pas d’exception ObjectDisposedException ✔️

SDK et MSBuild

Titre Compatible binaire Compatible avec la source
RuntimeIdentifier automatique pour certains projets ✔️
RuntimeIdentifier automatique pour la publication uniquement
La sortie de la console CLI utilise UTF-8
Encodage de la console non UTF-8 une fois l’opération terminée ✔️
Sérialisation MSBuild de types personnalisés dans .NET 7
Installations de SDK côte à côte
Manifestes de l’outil dans le dossier racine ✔️ ✔️
Configuration requise pour le SDK .NET 7 ✔️ ✔️
test dotnet: bascule -a vers l’alias --arch au lieu de --test-adapter-path
test dotnet: bascule -r vers l’alias --runtime au lieu de --results-dir
L’option --output n’est plus valide pour les commandes au niveau de la solution
Le SDK n’appelle plus ResolvePackageDependencies ✔️

Sérialisation

Titre Compatible binaire Compatible avec la source
DataContractSerializer conserve le signe lors de la désérialisation de -0 ✔️
Désérialiser le type de version avec un espace blanc de début ou de fin ✔️
Le constructeur de copie JsonSerializerOptions inclut JsonSerializerContext ✔️
Sérialisation polymorphe pour les types d’objets ✔️
Solution de repli du générateur de source System.Text.Json ✔️

Windows Forms

Titre Compatible binaire Compatible avec la source
Obsolescences et avertissements ✔️
Certaines API lèvent une exception ArgumentNullException ✔️

XML et XSLT

Titre Compatible binaire Compatible avec la source
XmlSecureResolver est obsolète

Voir aussi