Partager via


Les attributs OSPlatform ont été renommés ou supprimés

Les attributs suivants introduits dans .NET 5 Preview 8 ont été supprimés ou renommés : MinimumOSPlatformAttribute, RemovedInOSPlatformAttributeet ObsoletedInOSPlatformAttribute.

Description de la modification

.NET 5 Preview 8 a introduit les attributs suivants dans l'espace de noms System.Runtime.Versioning :

  • MinimumOSPlatformAttribute
  • RemovedInOSPlatformAttribute
  • ObsoletedInOSPlatformAttribute

Dans .NET 5 Preview 8, lorsqu’un projet cible une version spécifique au système d’exploitation de .NET 5 à l’aide d’un moniker de framework cible tel que net5.0-windows, la build ajoute un attribut au niveau System.Runtime.Versioning.MinimumOSPlatformAttribute de l’assembly.

Dans .NET 5 RC1, le ObsoletedInOSPlatformAttribute a été supprimé, et MinimumOSPlatformAttribute et RemovedInOSPlatformAttribute ont été renommés comme suit :

Nom dans Preview 8 Nom dans RC1 et versions ultérieures
MinimumOSPlatformAttribute SupportedOSPlatformAttribute
RemovedInOSPlatformAttribute UnsupportedOSPlatformAttribute

Dans .NET 5 RC1 et versions ultérieures, lorsqu’un projet cible une version spécifique au système d’exploitation de .NET 5 à l’aide d’un moniker de framework cible tel que net5.0-windows, la build ajoute un attribut au niveau SupportedOSPlatformAttribute de l’assembly.

Raison de la modification

.NET 5 Preview 8 a introduit dans System.Runtime.Versioning des attributs pour spécifier les plateformes prises en charge par les API. Les attributs sont consommés par l’analyseur de compatibilité de la plateforme pour produire des avertissements de build lorsque des API spécifiques à la plateforme sont consommées sur les plateformes qui ne prennent pas en charge ces API.

Pour .NET 5 RC1, une fonctionnalité supplémentaire a été ajoutée à l’analyseur de compatibilité de plateforme pour l’exclusion de plateforme. La fonctionnalité permet aux API d’être marquées comme entièrement non prises en charge sur les plateformes du système d’exploitation. Cette fonctionnalité a engendré des modifications des attributs, notamment en utilisant des noms plus appropriés. Le ObsoletedInOSPlatformAttribute a été supprimé, car il n’était plus nécessaire.

Version introduite

5.0 RC1

Lorsque vous reciblez votre projet de .NET 5 Preview 8 vers .NET 5 RC1, vous pouvez rencontrer des erreurs de génération ou d’exécution en raison de ces modifications. Par exemple, le changement de nom de MinimumOSPlatformAttribute est susceptible de produire des erreurs, car l’attribut est appliqué aux assemblages spécifiques à la plateforme au moment de la génération, et les artefacts de génération anciens feront toujours référence à l’ancien nom de l’API.

Exemples d’erreurs au moment de la compilation :

  • erreur CS0246 : le nom du type ou de l’espace de noms ’MinimumOSPlatformAttribute’ est introuvable (une directive using ou une référence d’assembly est-elle manquante ?)
  • erreur CS0246 : Le nom de type ou d’espace de noms « RemovedInOSPlatformAttribute » est introuvable (est-ce que vous avez oublié une directive d'utilisation ou une référence d'assemblage ?)
  • erreur CS0246 : Le nom de type ou d’espace de noms « ObsoletedInOSPlatformAttribute » est introuvable (vous manquez une directive d'utilisation ou une référence d'assembly ?)

Exemple d’erreur d’exécution :

Exception non gérée. System.TypeLoadException : Impossible de charger le type 'System.Runtime.Versioning.MinimumOSPlatformAttribute' de l’assembly 'System.Runtime, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.

Pour résoudre ces erreurs :

  • Mettez à jour toutes les références de MinimumOSPlatformAttribute à SupportedOSPlatformAttribute.
  • Mettez à jour toutes les références de RemovedInOSPlatformAttribute à UnsupportedOSPlatformAttribute.
  • Supprimez les références à ObsoletedInOSPlatformAttribute.
  • Régénérez votre projet (ou effectuez un nettoyage + build) pour supprimer les anciens artefacts de build.

API affectées

  • System.Runtime.Versioning.MinimumOSPlatformAttribute
  • System.Runtime.Versioning.ObsoletedInOSPlatformAttribute
  • System.Runtime.Versioning.RemovedInOSPlatformAttribute