Changements cassants dans .NET 6

Si vous migrez une application vers .NET 6, les changements cassants répertoriés ici peuvent vous concerner. Les changements sont groupé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
ActionResult<T> définit StatusCode sur 200 ✔️
Méthode AddDataAnnotationsValidation rendue obsolète ✔️
Assemblys supprimés de l’infrastructure partagée Microsoft.AspNetCore.App ✔️
Blazor : nom du paramètre modifié dans la méthode RequestImageFileAsync ✔️
Blazor : propriété WebEventDescriptor.EventArgsType remplacée
Blazor : interopérabilité du tableau d’octets ✔️
Changed MessagePack library in @microsoft/signalr-protocol-msgpack ✔️
La propriété ClientCertificate ne déclenche pas de renégociation pour HttpSys ✔️
Les métadonnées de EndpointName ne sont pas définies automatiquement ✔️
Identité : la version Bootstrap par défaut de l’interface utilisateur a été modifiée
Kestrel : les attributs de message de journal ont été modifiés ✔️
FRactionnement de Microsoft.AspNetCore.Http.Features ✔️
Intergiciel : l’intergiciel de redirection HTTPS lève une exception sur les ports HTTPS ambigus ✔️
Intergiciel : surcharge de nouvelle utilisation ✔️
Renommages des API minimales dans RC 1
Renommages des API minimales dans RC 2
MVC ne met pas en mémoire tampon les types IAsyncEnumerable lors de l’utilisation de System.Text.Json ✔️
Changement des annotations de type de référence Nullable ✔️
API obsolètes et supprimées ✔️
PreserveCompilationContext non configuré par défaut ✔️
Razor : le compilateur ne produit plus d’assembly d’affichages ✔️
Razor : changements des ID de journalisation ✔️
Razor : RazorAPI de moteur marquées comme obsolètes ✔️
SignalR : Client Java mis à jour vers RxJava3 ✔️
Les méthodes TryParse et BindAsync sont validées

Conteneurs

Titre Compatible binaire Compatible avec la source
Mise en forme de l’enregistreur d’événements de console par défaut dans les images conteneur ✔️

Pour plus d’informations sur d’autres changements cassants pour les conteneurs dans .NET 6, consultez Notes de publication du conteneur .NET 6.

Bibliothèques .NET Core

Titre Compatible binaire Compatible avec la source
Obsolescence d’API avec ID de diagnostics autres que ceux par défaut ✔️
Changement des annotations de type de référence Nullable ✔️
Évaluation de chaîne conditionnelle dans les méthodes de débogage ✔️
Comportement d’Environment.ProcessorCount sur Windows ✔️
Comportement de rappel EventSource ✔️ ✔️
File.Replace sur Unix lève des exceptions pour correspondre à Windows ✔️
FileStream verrouille les fichiers avec un verrou partagé sur Unix ✔️
FileStream ne synchronise plus le décalage de fichier avec le système d’exploitation
Mises à jour de FileStream.Position après la finalisation de ReadAsync ou de WriteAsync
Nouveaux ID de diagnostic pour les API obsolètes ✔️
Nouvelles surcharges de méthodes System.Linq.Queryable ✔️
Versions antérieures de l’infrastructure supprimées du package ✔️
Noms de paramètres modifiés ✔️
Noms de paramètres dans les types dérivés du flux ✔️
Lectures de ligne de code partiellement exécutée et à zéro octet dans DeflateStream, GZipStream et CryptoStream ✔️
Définir le timestamp sur un fichier en lecture seule sur Windows ✔️
Précision de l’analyse de format numérique standard ✔️
Membres abstraits statiques dans les interfaces ✔️
Surcharges et ordre d’évaluation de StringBuilder.Append ✔️
Les API avec nom fort lèvent l’exception PlatformNotSupportedException ✔️
System.Drawing.Common uniquement pris en charge sur Windows
System.Security.SecurityContext est marqué comme obsolète ✔️
Task.FromResult peut retourner un singleton ✔️
Exceptions non prises en charge d’un BackgroundService ✔️

Chiffrement

Titre Compatible binaire Compatible avec la source
Les méthodes CreateEncryptor lèvent une exception en cas de taille de commentaires incorrecte ✔️

Déploiement

Titre Compatible binaire Compatible avec la source
Chemin d’hôte x86 sur Windows 64 bits ✔️ ✔️

Entity Framework Core

Changements cassants dans EF Core 6

Extensions

Titre Compatible binaire Compatible avec la source
AddProvider recherche un fournisseur non null ✔️
FileConfigurationProvider.Load lève InvalidDataException ✔️
Les éléments XML répétés incluent un index ✔️
Résolution de la levée d’exceptions par un ServiceProvider supprimé ✔️

Globalisation

Titre Compatible binaire Compatible avec la source
Création de culture et mappage d’incidents en mode invariant de globalisation

Interop

Titre Compatible binaire Compatible avec la source
Membres abstraits statiques dans les interfaces ✔️

Compilateur JIT

Titre Compatible binaire Compatible avec la source
Forcer les arguments d’appel selon ECMA-335 ✔️ ✔️

Mise en réseau

Titre Compatible binaire Compatible avec la source
Port supprimé du SPN pour Kerberos et par négociation ✔️
WebRequest, WebClient et ServicePoint sont obsolètes ✔️

Kit SDK

Titre Compatible binaire Compatible avec la source
L'option -p pour dotnet run est déconseillée ✔️
Code C# dans les modèles non pris en charge par les versions antérieures ✔️ ✔️
Fichiers EditorConfig implicitement inclus ✔️
Générer apphost pour macOS ✔️
Générer une erreur en cas de fichiers en double dans la sortie de publication ✔️
Suppression de GetTargetFrameworkProperties et de GetNearestTargetFramework du protocole ProjectReference ✔️
Emplacement d’installation pour x64 émulé sur ARM64 ✔️
MSBuild ne prend plus en charge l’appel de GetType()
.NET ne peut pas être installé à un emplacement personnalisé ✔️ ✔️
OutputType n’est pas automatiquement défini sur WinExe ✔️
Publier ReadyToRun avec ---no-restore nécessite des changements ✔️
Fichier runtimeconfig.dev.json non généré ✔️
Avertissement RuntimeIdentifier si l’autonome n’est pas spécifié ✔️
Manifestes de l’outil dans le dossier racine ✔️ ✔️
Exigences de version pour le Kit de développement logiciel (SDK) .NET 6 ✔️ ✔️
Le fichier .version inclut la version de build ✔️ ✔️
Écrire des assemblys de référence dans IntermediateOutputPath ✔️

Sérialisation

Titre Compatible binaire Compatible avec la source
DataContractSerializer conserve le signe lors de la désérialisation de -0 ✔️
Format de sérialisation par défaut pour TimeSpan ✔️
Sérialisation IAsyncEnumerable ✔️
Refactorisation de l’API de génération de source JSON ✔️
JsonNumberHandlingAttribute sur les propriétés d’une collection ✔️
Nouvelles surcharges du générateur de source JsonSerializer ✔️

Windows Forms

Titre Compatible binaire Compatible avec la source
Les modèles C# utilisent le démarrage d’application ✔️
Les propriétés TableLayoutSettings sélectionnées lèvent InvalidEnumArgumentException ✔️
Les API liées à DataGridView lèvent désormais InvalidOperationException ✔️
Les méthodes ListViewGroupCollection lèvent une nouvelle exception InvalidOperationException ✔️
Augmentation de la longueur de texte maximale de NotifyIcon.Text ✔️
ScaleControl appelé uniquement quand cela est nécessaire ✔️
Certaines API lèvent une exception ArgumentNullException ✔️
TreeNodeCollection.Item lève une exception si le nœud est affecté ailleurs ✔️

XML et XSLT

Titre Compatible binaire Compatible avec la source
Comportement de XNodeReader.GetAttribute pour un index non valide ✔️

Voir aussi