Атрибуты OSPlatform переименованы или удалены
Следующие атрибуты, появившиеся в предварительной версии 8 .NET 5, были удалены или переименованы: MinimumOSPlatformAttribute
, RemovedInOSPlatformAttribute
и ObsoletedInOSPlatformAttribute
.
Описание изменения
В предварительной версии 8 .NET 5 в пространстве имен System.Runtime.Versioning появились следующие атрибуты:
MinimumOSPlatformAttribute
RemovedInOSPlatformAttribute
ObsoletedInOSPlatformAttribute
Если в предварительной версии 8 .NET 5 проект предназначен для использования в конкретной ОС .NET 5 с помощью моникера целевой платформы, например net5.0-windows
, сборка добавляет атрибут System.Runtime.Versioning.MinimumOSPlatformAttribute
уровня сборки.
В .NET 5 RC1 атрибут ObsoletedInOSPlatformAttribute
был удален, а атрибуты MinimumOSPlatformAttribute
и RemovedInOSPlatformAttribute
переименованы следующим образом.
Имя предварительной версии 8 | Имя RC1 и более поздних версий |
---|---|
MinimumOSPlatformAttribute |
SupportedOSPlatformAttribute |
RemovedInOSPlatformAttribute |
UnsupportedOSPlatformAttribute |
Если в .NET 5 RC1 и более поздних версиях проект предназначен для использования в конкретной ОС .NET 5 с помощью моникера целевой платформы, например net5.0-windows
, сборка добавляет атрибут SupportedOSPlatformAttribute уровня сборки.
Причина изменения
В предварительной версии 8 .NET 5 в System.Runtime.Versioning появились атрибуты для указания поддерживаемых платформ для API-интерфейсов. Анализатор совместимости платформ использует эти атрибуты для создания предупреждений сборки, когда интерфейсы API, зависящие от платформы, работают на платформах, их не поддерживающих.
В .NET 5 RC1 в анализатор совместимости платформ была добавлена дополнительная возможность исключения платформы. Эта функция позволяет помечать API-интерфейсы как полностью не поддерживаемые на платформах ОС. Она предлагает изменить атрибуты или использовать более подходящие имена. ObsoletedInOSPlatformAttribute
был удален, так как он больше не требуется.
Представленные версии
5.0 (RC1)
Рекомендуемое действие
При изменении целевой платформы проекта с предварительной версии 8 .NET 5 на .NET 5 RC1 могут возникать ошибки сборки или времени выполнения. Например, переименование MinimumOSPlatformAttribute
, скорее всего, приведет к появлению ошибок, поскольку атрибут применяется к сборкам для конкретных платформ во время сборки, а старые артефакты сборки по-прежнему ссылаются на старое имя API.
Примеры ошибок во время сборки:
- ошибка CS0246: не удалось найти имя типа или пространства имен "MinimumOSPlatformAttribute" (отсутствует директива using или ссылка на сборку?)
- ошибка CS0246: не удалось найти имя типа или пространства имен RemovedInOSPlatformAttribute (отсутствует директива using или ссылка на сборку?)
- ошибка CS0246: не удалось найти имя типа или пространства имен "Устаревшее имяIndInOSPlatformAttribute" (отсутствует директива using или ссылка на сборку?)
Пример ошибки во время выполнения:
Необработанное исключение. System.TypeLoadException: не удалось загрузить тип System.Runtime.Versioning.MinimumOSPlatformAttribute из сборки System.Runtime, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f1d50a3a.
Чтобы устранить эти ошибки, выполните следующие действия.
- Обновите все ссылки
MinimumOSPlatformAttribute
до SupportedOSPlatformAttribute. - Обновите все ссылки
RemovedInOSPlatformAttribute
до UnsupportedOSPlatformAttribute. - Удалите все ссылки на
ObsoletedInOSPlatformAttribute
. - Перестройте проект (или выполните очистку и сборку), чтобы удалить старые артефакты сборки.
Затронутые API
System.Runtime.Versioning.MinimumOSPlatformAttribute
System.Runtime.Versioning.ObsoletedInOSPlatformAttribute
System.Runtime.Versioning.RemovedInOSPlatformAttribute