Partage via


Changements cassants dans .NET 8

Si vous migrez une application vers .NET 8, les changements cassants 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 cassant comme binaire incompatible ou source incompatible, ou comme un changement de comportement :

  • Binaire incompatible : lorsqu’ils sont exécutés sur le nouveau runtime ou composant, les fichiers binaires existants peuvent rencontrer un changement de comportement cassant, tel qu’un échec de chargement ou d’exécution, et, si c’est le cas, peuvent 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 de comportement : le code et les fichiers binaires existants peuvent se comporter différemment au moment de l’exécution. Si le nouveau comportement n’est pas souhaitable, le code existant doit être mis à jour et recompilé.

ASP.NET Core

Titre Type de changement
ConcurrencyLimiterMiddleware est obsolète Source incompatible
Suppression des convertisseurs personnalisés pour la sérialisation Changements de comportement
ISystemClock est obsolète Source incompatible
API minimales : Les paramètres IFormFile nécessitent des vérifications anti-falsification Changements de comportement
L’intergiciel de limitation de débit nécessite AddRateLimiter Changements de comportement
Les événements relatifs aux jetons de sécurité renvoient un JsonWebToken Changements de comportement
La valeur par défaut de TrimMode est full pour les projets Web SDK Source incompatible

Conteneurs

Titre Type de changement
Le package « ca-certificates » est supprimé des images Alpine Incompatibilité binaire
Images conteneur Debian mises à niveau vers Debian 12 Incompatibilité binaire/Changement de comportement
Port par défaut ASP.NET Core remplacé par 8080 Changements de comportement
Le package Kerberos est supprimé des images Alpine et Debian Incompatibilité binaire
Package 'libintl' supprimé des images Alpine Changements de comportement
Les balises conteneurs multi-plateformes sont Linux uniquement Changements de comportement
Nouvel utilisateur « application » dans les images Linux Changements de comportement

Bibliothèques .NET Core

Titre Type de changement
Nom de l’opération d’activité quand null Changements de comportement
Comportement AnonymousPipeServerStream.Dispose Changements de comportement
Obsolescences de l’API avec des ID de diagnostic personnalisés Source incompatible
Mappage de barre oblique inverse dans les chemins de fichiers Unix Changements de comportement
Les méthodes Base64.DecodeFromUtf8 ignorent les espaces blancs Changements de comportement
Prise en charge du type d’énumération booléenne supprimée Changements de comportement
Format Complex.ToString remplacé par <a; b> Changements de comportement
Énumération du chemin d’accès au répertoire actif du lecteur Changements de comportement
Enumerable.Sum lève une nouvelle overflowException pour certaines entrées Changements de comportement
FileStream écrit lorsque le canal est fermé Changements de comportement
FindSystemTimeZoneById ne retourne pas un nouvel objet Changements de comportement
GC.GetGeneration peut renvoyer Int32.MaxValue Changements de comportement
Comportement GetFolderPath sur Unix Changements de comportement
GetSystemVersion ne renvoie plus ImageRuntimeVersion Changements de comportement
Annotations pouvant accepter la valeur Null ITypeDescriptorContext Source incompatible
Console.ReadKey héritée supprimée Changements de comportement
Les générateurs de méthodes génèrent des paramètres avec HasDefaultValue défini sur false Changements de comportement
ProcessStartInfo.WindowStyle honoré lorsque UseShellExecute a la valeur false Changements de comportement
RuntimeIdentifier renvoie la plate-forme pour laquelle le runtime a été construit Changements de comportement
Type.GetType lève une exception pour tous les types d’éléments non valides Changements de comportement

Chiffrement

Titre Type de changement Introduit
Taille de la balise d’authentification AesGcm sur macOS Changements de comportement Preview 1
RSA.EncryptValue et RSA.DecryptValue obsolète Source incompatible Preview 1

Déploiement

Titre Type de changement
L’hôte détermine les ressources propres au RID Incompatibilité binaire/Changement de comportement
.NET Monitor inclut uniquement des images sans distortion Changements de comportement
StripSymbols a la valeur true par défaut Changements de comportement

Entity Framework Core

Changements cassants dans EF Core 8

Extensions

Titre Type de changement
ActivatorUtilities.CreateInstance se comporte de manière cohérente Changements de comportement
ActivatorUtilities.CreateInstance nécessite un fournisseur non null Changements de comportement
ConfigurationBinder lève une exception en cas de valeur incompatible Changements de comportement
Le package ConfigurationManager ne fait plus référence à System.Security.Permissions Source incompatible
Le package DirectoryServices ne fait plus référence à System.Security.Permissions Source incompatible
Clés vides ajoutées au dictionnaire par le classeur de configuration Changements de comportement
HostApplicationBuilderSettings.Args respecté par le constructeur HostApplicationBuilder Changements de comportement
ManagementDateTimeConverter.ToDateTime retourne une heure locale Changements de comportement
Modification de la mise en forme de System.Formats.Cbor DateTimeOffset Changements de comportement

Globalisation

Titre Type de changement
Les convertisseurs de date et d’heure respectent l’argument de culture Changements de comportement
La valeur par défaut de TwoDigitYearMax est 2049 Changements de comportement

Interop

Titre Type de changement
CreateObjectFlags.Unwrap désenveloppe uniquement sur l’instance cible Changements de comportement
Les marshallers personnalisés nécessitent des membres supplémentaires Source incompatible
API IDispatchImplAttribute est supprimée Incompatibilité binaire
Constructeur par défaut public implicite JSFunctionBinding supprimé Incompatibilité binaire
Les types SafeHandle doivent avoir un constructeur public Source incompatible

Mise en réseau

Titre Type de changement
SendFile lève NotSupportedException pour les sockets sans connexion Changements de comportement
Les informations utilisateur dans les URI mailto: sont comparées Changements de comportement

Réflexion

Titre Type de changement
IntPtr n’est plus utilisé pour les types de pointeur de fonction Changements de comportement

Kit SDK

Titre Type de changement
La sortie de la console CLI utilise UTF-8 Changement de comportement/Source et binaire incompatibles
Encodage de la console non UTF-8 une fois l’opération terminée Changement de comportement/binaire incompatible
Conteneurs par défaut pour utiliser l’étiquette « latest » Changements de comportement
'dotnet pack' utilise la configuration Release Changement de comportement/Source incompatible
'dotnet publish' utilise la configuration Release Changement de comportement/Source incompatible
Sortie dupliquée pour -getItem, -getProperty et -getTargetResult Changements de comportement
using implicite pour System.Net.Http n’est plus ajouté Changement de comportement/Source incompatible
Événements de build dérivés personnalisés de MSBuild déconseillés Changements de comportement
MSBuild respecte DOTNET_CLI_UI_LANGUAGE Changements de comportement
Applications propres au runtime non autonomes Source/Incompatibilité binaire
L’option --arch n’implique pas l’autonomie Changements de comportement
'dotnet restore' génère des avertissements de vulnérabilité de sécurité Changements de comportement
Le kit de développement logiciel (SDK) utilise un graphique RID plus petit Changement de comportement/Source incompatible
Définir DebugSymbols sur false désactive la génération PDB Changements de comportement
Source Link inclus dans le kit de développement logiciel (SDK) .NET Source incompatible
Trimming peut ne pas être utilisé avec .NET Standard ou .NET Framework Changements de comportement
Packages non répertoriés non installés par défaut pour les outils .NET Changements de comportement
Fichier .user importé dans les builds externes Changements de comportement
Exigences de version pour le kit de développement logiciel (SDK) .NET 8 Source incompatible

Sérialisation

Titre Type de changement
BinaryFormatter désactivé pour la plupart des projets Changements de comportement
Les projets PublishedTrimmed ne peuvent pas avoir de sérialisation basée sur la réflexion Changements de comportement
Le désérialiseur basé sur la réflexion résout les métadonnées avec empressement Changements de comportement

Windows Forms

Titre Type de changement
Modifications de la disposition des ancres Changements de comportement
Certificats vérifiés avant de charger des images distantes dans PictureBox Changements de comportement
DateTimePicker.Text est une chaîne vide Changements de comportement
DefaultValueAttribute supprimé dans certaines propriétés Changements de comportement
Le constructeur ExceptionCollection lève ArgumentException Changements de comportement
Mise à l’échelle des formulaires selon AutoScaleMode Changements de comportement
ImageList.ColorDepth par défaut est Depth32Bit Changements de comportement
System.Windows.Extensions ne référence pas System.Drawing.Common Source incompatible
TableLayoutStyleCollection lève ArgumentException Changements de comportement
Mettre à l’échelle la taille minimale et maximale des formulaires de niveau supérieur en PPP Changements de comportement
L’obsolescence WFDEV002 est maintenant une erreur Source incompatible

Voir aussi