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
, RemovedInOSPlatformAttribute
et 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 d’infrastructure cible tel que net5.0-windows
, la build ajoute un attribut System.Runtime.Versioning.MinimumOSPlatformAttribute
de niveau 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 d’infrastructure cible tel que net5.0-windows
, la build ajoute un attribut SupportedOSPlatformAttribute de niveau assembly.
Raison du changement
.NET 5 Preview 8 a introduit des attributs dans System.Runtime.Versioning pour spécifier les plateformes prises en charge pour les API. Les attributs sont consommés par l’Analyseur de compatibilité de plateforme pour générer des avertissements de génération lorsque des API spécifiques à la plateforme sont consommées sur des 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 de système d’exploitation. Cette fonctionnalité a nécessité des modifications aux attributs, y compris l’utilisation de noms plus appropriés. Le ObsoletedInOSPlatformAttribute
a été supprimé, car il n’était plus nécessaire.
Version introduite
5.0 RC1
Action recommandée
Lorsque vous reciblez votre projet de .NET 5 Preview 8 vers .NET 5 RC1, vous pouvez rencontrer des erreurs de build ou d’exécution en raison de ces modifications. Par exemple, le renommage de MinimumOSPlatformAttribute
est susceptible de générer des erreurs, car l’attribut est appliqué aux assemblys spécifiques à la plateforme au moment de la génération, et les anciens artefacts de build font toujours référence à l’ancien nom de l’API.
Exemples d’erreurs au moment de la génération :
- 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 du type ou de l’espace de noms ’RemovedInOSPlatformAttribute’ est introuvable (une directive using ou une référence d’assembly est-elle manquante ?)
- erreur CS0246 : le nom du type ou de l’espace de noms ’ObsoletedInOSPlatformAttribute’ est introuvable (une directive using ou une référence d’assembly est-elle manquante ?)
Exemple d’erreur d’exécution :
Exception non gérée. System.TypeLoadException : Could not load type 'System.Runtime.Versioning.MinimumOSPlatformAttribute' from 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 toutes les références à
ObsoletedInOSPlatformAttribute
. - Régénérez votre projet (ou effectuez Nettoyer et générer) pour supprimer les anciens artefacts de build.
API affectées
System.Runtime.Versioning.MinimumOSPlatformAttribute
System.Runtime.Versioning.ObsoletedInOSPlatformAttribute
System.Runtime.Versioning.RemovedInOSPlatformAttribute