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
, RemovedInOSPlatformAttribute
i 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 MinimumOSPlatformAttribute
RemovedInOSPlatformAttribute
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
Zalecana akcja
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
ObsoletedInOSPlatformAttribute
elementu . - 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