Partager via


Changements cassants dans .NET 5

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

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

  • Compatible binaire : les fichiers binaires existants 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 Noyau

Titre Compatible binaire Compatible avec la source
ASP.NET Principales applications désérialisent les nombres entre guillemets ✔️
API AzureAD.UI et AzureADB2C.UI obsolètes ✔️
Les méthodes de sérialisation BinaryFormatter sont obsolètes ✔️
La ressource dans le routage des points de terminaison est HttpContext ✔️
Packages d’intégration Azure préfixés par Microsoft supprimés ✔️
Blazor : Logique de précédence de routage modifiée dans les applications Blazor ✔️
Blazor : Prise en charge du navigateur mise à jour ✔️ ✔️
Blazor : espace blanc non significatif tronqué par le compilateur ✔️
Blazor : les types JSObjectReference et JSInProcessObjectReference sont internes ✔️
Blazor : Infrastructure cible des packages NuGet modifiés ✔️
Blazor : Fonctionnalité ProtectedBrowserStorage déplacée vers le framework partagé ✔️
Blazor : Les champs publics readonly RenderTreeFrame sont désormais des propriétés ✔️
Blazor : Logique de validation mise à jour pour les ressources web statiques ✔️
API de chiffrement non prises en charge sur le navigateur ✔️
Extensions : Modifications de référence de package ✔️
Les types Kestrel et IIS BadHttpRequestException sont obsolètes ✔️
Instances HttpClient créées par les codes d’état de l’entier du journal IHttpClientFactory ✔️
HttpSys : Renégociation de certificat client désactivée par défaut ✔️
IIS : Les chaînes de requête d’intergiciel UrlRewrite sont conservées ✔️
Kestrel : Modifications de configuration détectées par défaut ✔️
Kestrel : Les versions de protocole TLS prises en charge par défaut ont changé ✔️
Kestrel : HTTP/2 désactivé sur TLS sur les versions incompatibles de Windows ✔️ ✔️
Kestrel : Transport Libuv marqué comme obsolète ✔️
Propriétés obsolètes sur ConsoleLoggerOptions ✔️
Classe ResourceManagerWithCultureStringLocalizer et membre de l’interface WithCulture supprimés ✔️
API pubternal supprimées ✔️
Constructeur obsolète supprimé dans le middleware de localisation de requête ✔️
Middleware : page d’erreur de base de données marquée comme obsolète ✔️
L’intergiciel du gestionnaire d’exceptions lève l’exception d’origine ✔️ ✔️
ObjectModelValidator appelle une nouvelle surcharge de Validate ✔️
Encodage de nom de cookie supprimé ✔️
Versions du package NuGet IdentityModel mises à jour ✔️
SignalR : Type d’options de protocole MessagePack Hub modifié ✔️
SignalR : MessagePack Hub Protocol déplacé ✔️
Méthodes UseSignalR et UseConnections supprimées ✔️
Type de contenu CSV modifié en 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 associées à l’assembly pour la publication à fichier unique ✔️
Les méthodes de sérialisation BinaryFormatter sont obsolètes ✔️
Les API de sécurité d’accès au code sont obsolètes ✔️
CreateCounterSetInstance lève InvalidOperationException ✔️
ActivityIdFormat par défaut est W3C ✔️
Environment.OSVersion retourne la version correcte ✔️
La valeur de FrameworkDescription n’est pas .NET Core ✔️
Les API GAC sont obsolètes ✔️
Vérifications IsSupported intrinsèques matérielles ✔️
IntPtr et UIntPtr implémentent IFormattable ✔️
LastIndexOf gère les chaînes de recherche vides ✔️
Chemins d’URI avec des caractères non ASCII sur Unix ✔️
Obsoletions d'API avec des ID de diagnostic non par défaut ✔️
Propriétés obsolètes sur ConsoleLoggerOptions ✔️
Complexité de LINQ OrderBy.First ✔️
Attributs OSPlatform renommés ou supprimés ✔️
Package Microsoft.DotNet.PlatformAbstractions supprimé ✔️
PrincipalPermissionAttribute est obsolète ✔️
Modifications de nom de paramètre des versions préliminaires ✔️
Modifications de nom de paramètre dans les assemblys de référence ✔️
Les API de communication à distance sont obsolètes ✔️
La liste Activity.Tags est inversée ✔️
Les méthodes de comparaison SSE et SSE2 gèrent NaN ✔️
Thread.Abort est obsolète ✔️
Reconnaissance d’URI des chemins UNC sur Unix ✔️
Les chemins de code UTF-7 sont obsolètes ✔️
Modification du comportement pour Vector2.Lerp et Vector4.Lerp ✔️
Vector<T> lève NotSupportedException ✔️

Cryptographie

Titre Compatible binaire Compatible avec la source
API de chiffrement non prises en charge sur le navigateur ✔️
Cryptography.Oid est init-only ✔️
Suites de chiffrement TLS par défaut sur Linux ✔️
Les surcharges Create() sur les abstractions de chiffrement sont obsolètes ✔️
Valeur FeedbackSize par défaut modifiée ✔️

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

Changements cassants dans EF Core 5.0

Mondialisation

Titre Compatible binaire Compatible avec la source
Utiliser des bibliothèques ICU sur Windows ✔️
StringInfo et TextElementEnumerator sont conformes à UAX29 ✔️
Catégorie Unicode modifiée pour les caractères Latin-1 ✔️
Valeurs TextInfo.ListSeparator modifiées ✔️

Interopérabilité

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

Réseautage

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

Kit de développement logiciel (SDK)

Titre Compatible binaire Compatible avec la source
Fichiers Directory.Packages.props importés par défaut ✔️
Erreur générée lorsque le projet exécutable fait référence à un exécutable incompatible ✔️
FrameworkReference remplacé par WindowsSdkPackageVersion pour le Kit de développement logiciel (SDK) Windows ✔️
NETCOREAPP3_1 symbole de préprocesseur non défini ✔️
OutputType défini sur WinExe ✔️
Modification du comportement publishDepsFilePath ✔️
Modification de TargetFramework de netcoreapp à net ✔️
Les applications WinForms et WPF utilisent Microsoft.NET.Sdk ✔️

Sécurité

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

Sérialisation

Titre Compatible binaire Compatible avec la source
BinaryFormatter.Deserialize réenveloppe les exceptions ✔️
JsonSerializer.Deserialize nécessite une chaîne à caractère unique ✔️
ASP.NET Principales applications désérialisent les nombres entre guillemets ✔️
JsonSerializer.Serialize lève ArgumentNullException ✔️
Constructeurs sans paramètre non publics non utilisés pour la désérialisation ✔️
Les options sont respectées lors de la sérialisation des 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 ✔️
Méthodes throw ArgumentException ✔️
Méthodes throw ArgumentNullException ✔️
Propriétés lèvent ArgumentOutOfRangeException ✔️
TextFormatFlags.ModifyString est obsolète ✔️
API DataGridView lève invalidOperationException ✔️
Les applications WinForms utilisent Microsoft.NET.Sdk ✔️
Contrôles de barre d’état supprimés ✔️

WPF (Windows Presentation Foundation)

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

Voir aussi