Udostępnij za pośrednictwem


Nazwa atrybutów OSPlatform została zmieniona lub zostały usunięte

Następujące atrybuty wprowadzone na platformie .NET 5 (wersja zapoznawcza 8) zostały usunięte lub zmienione: MinimumOSPlatformAttribute, RemovedInOSPlatformAttributei ObsoletedInOSPlatformAttribute.

Opis zmiany

Program .NET 5 (wersja zapoznawcza 8) wprowadził następujące atrybuty w System.Runtime.Versioning przestrzeni nazw:

  • MinimumOSPlatformAttribute
  • RemovedInOSPlatformAttribute
  • ObsoletedInOSPlatformAttribute

W programie .NET 5 (wersja zapoznawcza 8), gdy projekt jest przeznaczony dla określonego systemu operacyjnego .NET 5 przy użyciu docelowego pseudonimu platformy, takiego jak net5.0-windows, kompilacja dodaje atrybut na poziomie System.Runtime.Versioning.MinimumOSPlatformAttribute zestawu.

W programie .NET 5 RC1 ObsoletedInOSPlatformAttribute element został usunięty i MinimumOSPlatformAttributeRemovedInOSPlatformAttribute zmieniono jego nazwę w następujący sposób:

Nazwa wersji zapoznawczej 8 RC1 i nowsza nazwa
MinimumOSPlatformAttribute SupportedOSPlatformAttribute
RemovedInOSPlatformAttribute UnsupportedOSPlatformAttribute

W programie .NET 5 RC1 lub nowszym, gdy projekt jest przeznaczony dla systemu operacyjnego specyficzny dla platformy .NET 5 przy użyciu docelowego pseudonimu platformy, takiego jak net5.0-windows, kompilacja dodaje atrybut na poziomie zestawuSupportedOSPlatformAttribute.

Przyczyna wprowadzenia zmiany

Program .NET 5 (wersja zapoznawcza 8) wprowadził atrybuty, System.Runtime.Versioning aby określić obsługiwane platformy dla interfejsów API. Atrybuty są używane przez analizator zgodności platformy w celu wygenerowania ostrzeżeń kompilacji, gdy interfejsy API specyficzne dla platformy są używane na platformach, które nie obsługują tych interfejsów API.

W przypadku platformy .NET 5 RC1 dodano dodatkową funkcję do analizatora zgodności platformy w celu wykluczenia platformy. Funkcja umożliwia oznaczenie interfejsów API jako całkowicie nieobsługiwanych na platformach systemu operacyjnego. Ta funkcja skłoniła zmiany do atrybutów, w tym użycie bardziej odpowiednich nazw. Element ObsoletedInOSPlatformAttribute został usunięty, ponieważ nie był już potrzebny.

Wprowadzona wersja

5.0 RC1

Podczas ponownego pobierania projektu z platformy .NET 5 (wersja zapoznawcza 8) do platformy .NET 5 RC1 mogą wystąpić błędy kompilacji lub czasu wykonywania z powodu tych zmian. Na przykład zmiana MinimumOSPlatformAttribute nazwy elementu prawdopodobnie spowoduje błędy, ponieważ atrybut jest stosowany do zestawów specyficznych dla platformy w czasie kompilacji, a stare artefakty kompilacji będą nadal odwoływać się do starej nazwy interfejsu API.

Przykładowe błędy czasu kompilacji:

  • błąd CS0246: Nie można odnaleźć nazwy typu lub przestrzeni nazw "MinimumOSPlatformAttribute" (czy brakuje dyrektywy using lub odwołania do zestawu?)
  • błąd CS0246: Nie można odnaleźć nazwy typu lub przestrzeni nazw "RemovedInOSPlatformAttribute" (czy brakuje dyrektywy using lub odwołania do zestawu?)
  • błąd CS0246: Nie można odnaleźć nazwy typu lub przestrzeni nazw "ObsoletedInOSPlatformAttribute" (czy brakuje dyrektywy using lub odwołania do zestawu?)

Przykładowy błąd czasu wykonywania:

Nieobsługiwany wyjątek. System.TypeLoadException: nie można załadować typu "System.Runtime.Versioning.MinimumOSPlatformAttribute" z zestawu "System.Runtime, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".

Aby rozwiązać te błędy:

  • Zaktualizuj wszystkie odwołania MinimumOSPlatformAttribute do SupportedOSPlatformAttribute.
  • Zaktualizuj wszystkie odwołania RemovedInOSPlatformAttribute do UnsupportedOSPlatformAttribute.
  • Usuń wszystkie odwołania do ObsoletedInOSPlatformAttributeelementu .
  • Ponownie skompiluj projekt (lub wykonaj czyszczenie i kompilację), aby usunąć stare artefakty kompilacji.

Dotyczy interfejsów API

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