OSPlatform-Attribute umbenannt oder entfernt

Die folgenden Attribute, die in .NET 5 Preview 8 eingeführt wurden, wurden entfernt oder umbenannt: MinimumOSPlatformAttribute, RemovedInOSPlatformAttribute und ObsoletedInOSPlatformAttribute.

Änderungsbeschreibung

In NET 5 Preview 8 wurden die folgenden Attribute im Namespace System.Runtime.Versioning eingeführt:

  • MinimumOSPlatformAttribute
  • RemovedInOSPlatformAttribute
  • ObsoletedInOSPlatformAttribute

Wenn in .NET 5 Preview 8 ein Projekt auf eine betriebssystemspezifische Variante von .NET 5 abzielt, indem ein Zielframeworkmoniker wie z. B. net5.0-windows verwendet wird, fügt der Build das Attribut System.Runtime.Versioning.MinimumOSPlatformAttribute auf Assembly-Ebene hinzu.

In .NET 5 RC1 wurde ObsoletedInOSPlatformAttribute entfernt, und MinimumOSPlatformAttribute und RemovedInOSPlatformAttribute wurden wie folgt umbenannt:

Name in Preview 8 Name ab RC1
MinimumOSPlatformAttribute SupportedOSPlatformAttribute
RemovedInOSPlatformAttribute UnsupportedOSPlatformAttribute

Wenn ab .NET 5 RC1 ein Projekt auf eine betriebssystemspezifische Variante von .NET 5 abzielt, indem ein Zielframeworkmoniker wie z. B. net5.0-windows verwendet wird, fügt der Build das Attribut SupportedOSPlatformAttribute auf Assembly-Ebene hinzu.

Grund für die Änderung

In NET 5 Preview 8 wurden Attribute in System.Runtime.Versioning eingeführt, um unterstützte Plattformen für APIs anzugeben. Die Attribute werden vom Analysetool für die Plattformkompatibilität genutzt, um Buildwarnungen zu erzeugen, wenn plattformspezifische APIs auf Plattformen eingesetzt werden, die diese APIs nicht unterstützen.

In .NET 5 RC1 wurde dem Analysetool für die Plattformkompatibilität ein zusätzliches Feature für den Ausschluss von Plattformen hinzugefügt. Diese Feature ermöglicht, dass APIs auf Betriebssystemplattformen als gänzlich nicht unterstützt markiert werden. Dieses Feature hat Änderungen an den Attributen veranlasst, einschließlich der Verwendung geeigneterer Namen. ObsoletedInOSPlatformAttribute wurde entfernt, da es nicht mehr benötigt wird.

Eingeführt in Version

5.0 RC1

Wenn Sie Ihr Projekt von .NET 5 Preview 8 auf .NET 5 RC1 umstellen, kann es aufgrund dieser Änderungen zu Build- oder Laufzeitfehlern kommen. Beispielsweise führt die Umbenennung von MinimumOSPlatformAttribute wahrscheinlich zu Fehlern, da das Attribut zur Buildzeit auf plattformspezifische Assemblys angewendet wird und alte Buildartefakte weiterhin auf den alten API-Namen verweisen.

Beispiele für Fehler zur Buildzeit:

  • Fehler CS0246: Der Typ- oder Namespacename MinimumOSPlatformAttribute wurde nicht gefunden (fehlt eine using-Direktive oder ein Assemblyverweis?)
  • Fehler CS0246: Der Typ- oder Namespacename RemovedInOSPlatformAttribute wurde nicht gefunden (fehlt eine using-Direktive oder ein Assemblyverweis?)
  • Fehler CS0246: Der Typ- oder Namespacename ObsoletedInOSPlatformAttribute wurde nicht gefunden (fehlt eine using-Direktive oder ein Assemblyverweis?)

Beispiel für Laufzeitfehler:

Ausnahmefehler. System.TypeLoadException: Der Typ System.Runtime.Versioning.MinimumOSPlatformAttribute konnte nicht aus der Assembly System.Runtime, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a geladen werden.

So beheben Sie diese Fehler

  • Ändern Sie alle Verweise auf MinimumOSPlatformAttribute in SupportedOSPlatformAttribute.
  • Ändern Sie alle Verweise auf RemovedInOSPlatformAttribute in UnsupportedOSPlatformAttribute.
  • Entfernen Sie alle Verweise auf ObsoletedInOSPlatformAttribute.
  • Erstellen Sie Ihr Projekt neu (oder führen Sie Bereinigung und Build durch), um alte Buildartefakte zu löschen.

Betroffene APIs

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