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
Empfohlene Maßnahme
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