Changements cassants dans .NET 5

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

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 applications ASP.NET Core désérialisent les nombres entre guillemets ✔️
Les API AzureAD.UI et AzureADB2C.UI sont obsolètes ✔️
Les méthodes de sérialisation BinaryFormatter sont obsolètes ✔️
La ressource dans le routage du point de terminaison est HttpContext ✔️
Les packages d’intégration Azure avec préfixe Microsoft ont été supprimés ✔️
Blazor : La logique de priorité des itinéraires a changé dans les applications Blazor ✔️
Blazor : La prise en charge du navigateur a été mise à jour ✔️ ✔️
Blazor : L’espace blanc non significatif a été supprimé par le compilateur ✔️
Blazor : Les types JSObjectReference et JSInProcessObjectReference sont internes ✔️
Blazor : Le framework cible des packages NuGet a été modifié ✔️
Blazor : La fonctionnalité ProtectedBrowserStorage a été déplacée vers le framework partagé ✔️
Blazor : Les champs publics en lecture seule RenderTreeFrame sont désormais des propriétés ✔️
Blazor : La logique de validation pour les ressources web statiques a été mise à jour ✔️
Les API de chiffrement ne sont pas prises en charge sur le navigateur ✔️
Extensions : Modifications de la référence de package ✔️
Les types Kestrel et IIS BadHttpRequestException sont obsolètes ✔️
Des instances HttpClient ont été créées par les codes de statut d’entiers de journaux IHttpClientFactory ✔️
HttpSys : La renégociation du certificat client a est désactivée par défaut ✔️
IIS : Les chaînes de requête de l’intergiciel (middleware) UrlRewrite sont conservées ✔️
Kestrel : Les modifications de configuration sont détectées par défaut ✔️
Kestrel : Les versions du protocole TLS prises en charge par défaut ont été modifiées ✔️
Kestrel : HTTP/2 a été désactivé sur TLS pour les versions de Windows incompatibles ✔️ ✔️
Kestrel : Le transport Libuv est marqué comme obsolète ✔️
Propriétés obsolètes sur ConsoleLoggerOptions ✔️
La classe ResourceManagerWithCultureStringLocalizer et le membre d’interface WithCulture ont été supprimés ✔️
Les API Pubternal ont été supprimées ✔️
Le constructeur obsolète a été supprimé de l’intergiciel (middleware) de localisation des requêtes ✔️
Intergiciel (middleware) : La page d’erreurs de base de données est marquée comme obsolète ✔️
L’intergiciel (middleware) du gestionnaire d’exceptions lève une exception d’origine ✔️ ✔️
ObjectModelValidator appelle une nouvelle surcharge de Validate ✔️
L’encodage du nom du cookie a été supprimé ✔️
Les versions du package NuGet IdentityModel ont été mises à jour ✔️
SignalR : Le type d’options du protocole MessagePack Hub a été modifié ✔️
SignalR : Le protocole MessagePack Hub a été déplacé ✔️
Les méthodes UseSignalR et UseConnections ont été supprimées ✔️
Le type de contenu CSV est maintenant conforme aux normes ✔️

Analyse du code

Titre Compatible binaire Compatible avec la source
Avertissement CA1416 ✔️
Avertissement CA1417 ✔️
Avertissement CA1831 ✔️
Avertissement CA2013 ✔️
Avertissement CA2014 ✔️
Avertissement CA2015 ✔️
Avertissement CA2200 ✔️
Avertissement CA2247 ✔️

Bibliothèques .NET Core

Titre Compatible binaire Compatible avec la source
Modifications de l’API liée à l’assembly pour la publication monofichier ✔️
Les méthodes de sérialisation BinaryFormatter sont obsolètes ✔️
Les API de sécurité d’accès du code sont obsolètes ✔️
CreateCounterSetInstance lève InvalidOperationException ✔️
La valeur ActivityIdFormat par défaut est W3C ✔️
Environment.OSVersion retourne la version correcte ✔️
La valeur de FrameworkDescription est .NET et non pas .NET Core ✔️
Les API GAC sont obsolètes ✔️
Contrôles IsSupported intrinsèques matériels ✔️
IntPtr et UIntPtr implémentent IFormattable ✔️
LastIndexOf gère les chaînes de recherche vides ✔️
Chemins d’accès URI avec des caractères non-ASCII sur UNIX ✔️
Obsolescence d’API avec ID de diagnostics autres que ceux par défaut ✔️
Propriétés obsolètes sur ConsoleLoggerOptions ✔️
Complexité de LINQ OrderBy.First ✔️
Les attributs OSPlatform ont été renommés ou supprimés ✔️
Le package Microsoft.DotNet.PlatformAbstractions a été supprimé ✔️
PrincipalPermissionAttribute est obsolète ✔️
Modifications des noms de paramètres à partir des versions préliminaires ✔️
Modifications des noms de paramètres dans les assemblys de référence ✔️
Les API de communication à distance sont obsolètes ✔️
L’ordre de la liste Activity.Tags est inversé ✔️
Les méthodes de comparaison SSE et SSE2 gèrent NaN ✔️
Thread.Abort est obsolète ✔️
Reconnaissance d’URI des chemins d’accès UNC sur UNIX ✔️
Les chemins d’accès en code UTF-7 sont obsolètes ✔️
Changement de comportement pour Vector2.Lerp et Vector4.Lerp ✔️
Le Vector<T> lève NotSupportedException ✔️

Chiffrement

Titre Compatible binaire Compatible avec la source
Les API de chiffrement ne sont pas prises en charge sur le navigateur ✔️
Cryptography.Oid est uniquement initialisé ✔️
Suites de chiffrement TLS par défaut sur Linux ✔️
Les surcharges Create() sur les abstractions de chiffrement sont obsolètes ✔️
La valeur FeedbackSize par défaut a été modifiée ✔️

Entity Framework Core

Changements cassants dans EF Core 5.0

Globalisation

Titre Compatible binaire Compatible avec la source
Utiliser des bibliothèques ICU sur Windows ✔️
StringInfo et TextElementEnumerator sont conformes à UAX29 ✔️
La catégorie Unicode a été modifiée pour les caractères Latin-1 ✔️
Les valeurs ListSeparator ont été modifiées ✔️

Interop

Titre Compatible binaire Compatible avec la source
La prise en charge de WinRT est supprimée ✔️
La conversion de RCW en InterfaceIsIInspectable lève une exception ✔️
Aucune détection de suffixe A/W sur les plateformes non-Windows ✔️

Mise en réseau

Titre Compatible binaire Compatible avec la source
La gestion des chemins d’accès des cookies est conforme à la norme RFC 6265 ✔️
LocalEndPoint est mis à jour après l’appel de SendToAsync ✔️
MulticastOption.Group n’accepte pas la valeur null ✔️
Les flux autorisent les opérations Begin successives ✔️
WinHttpHandler a été supprimé du runtime .NET ✔️

Kit SDK

Titre Compatible binaire Compatible avec la source
Les fichiers Directory.Packages.props sont importés par défaut ✔️
Erreur générée lorsqu’un projet exécutable fait référence à un exécutable incompatible ✔️
Remplacement de FrameworkReference par WindowsSdkPackageVersion pour le Kit de développement logiciel (SDK) Windows ✔️
Le symbole de préprocesseur NETCOREAPP3_1 n’est pas défini ✔️
OutputType défini sur WinExe ✔️
Changement de comportement de PublishDepsFilePath ✔️
Changement de TargetFramework de netcoreapp en net ✔️
Les applications WinForms et WPF utilisent Microsoft.NET.Sdk ✔️

Sécurité

Intitulé Compatible binaire Compatible avec la source
Les API de sécurité d’accès du code sont obsolètes ✔️
PrincipalPermissionAttribute est obsolète ✔️
Les chemins d’accès en code UTF-7 sont obsolètes ✔️

Sérialisation

Titre Compatible binaire Compatible avec la source
BinaryFormatter.Deserialize réencapsule les exceptions ✔️
JsonSerializer.Deserialize nécessite une chaîne à caractère unique ✔️
Les applications ASP.NET Core désérialisent les nombres entre guillemets ✔️
JsonSerializer.Serialize lève ArgumentNullException ✔️
Les constructeurs sans paramètre et non publics ne sont pas utilisés pour la désérialisation ✔️
Les options sont respectées lors de la sérialisation de paires clé-valeur ✔️

Windows Forms

Titre Compatible binaire Compatible avec la source
Le code natif ne peut pas accéder aux objets Windows Forms ✔️
OutputType défini sur WinExe ✔️
DataGridView ne réinitialise pas les polices personnalisées ✔️
Les méthodes lèvent ArgumentException ✔️
Les méthodes lèvent ArgumentNullException ✔️
Les propriétés lèvent ArgumentOutOfRangeException ✔️
TextFormatFlags.ModifyString est obsolète ✔️
Les API DataGridView lèvent InvalidOperationException ✔️
Les applications WinForms utilisent Microsoft.NET.Sdk ✔️
Les contrôles de barre d'état ont été supprimés ✔️

WPF

Titre Compatible binaire Compatible avec la source
OutputType défini sur WinExe ✔️
Les applications WPF utilisent Microsoft.NET.Sdk ✔️

Voir aussi