Специфичные для платформы API
Новый .NET является кроссплатформенным. Вы можете запустить своё приложение на разных платформах. Однако использование специфичных для конкретных платформ API означает, что с ними нужно быть осторожным. В .NET появились новые API и анализатор совместимости платформ для решения проблем кроссплатформенности. .NET 5 представил новые статические методы в классе
OperatingSystem:-
IsAndroid
- IsBrowser
- IsFreeBSD
- IsIOS
- IsLinux
- IsWindows
- и другие.Полный список находится здесь
Кроме того, представлены новые атрибуты:
-
[SupportedOSPlatform] для обозначения, что API специфично для какой-то платформы.-
[UnsupportedOSPlatform] для обозначения, что API не подходит для какой-то платформы.См. картинку ниже.
Считается, что API без этих атрибутов работают на всех платформах. Анализатор совместимости с платформой включён в список анализаторов качества кода Roslyn. Начиная с .NET 5, он входит в пакет SDK для .NET и включен по умолчанию для .NET 5 и более поздних версий.
Подробнее о том, как анализатор определяет зависимость от платформы
В .NET 6 представлена концепция включения платформ, когда одна платформа может быть подмножеством другой платформы. Новые настраиваемые атрибуты для зависимых от платформы API:
-
[SupportedOSPlatformGuard]
- [UnsupportedOSPlatformGuard]
Например, платформа iOS является подмножеством платформы MacCatalyst. Поэтому для [SupportedOSPlatformGuard("MacCatalyst")] метод OperatingSystem.IsIOS(), помеченный этим атрибутом проверит и iOS, и MacCatalyst.Источник: https://twitter.com/okyrylchuk/status/1481011910195752960