Новые возможности .NET Standard
.NET Standard — это формальная спецификация, определяющая ряд версий с набором интерфейсов API, которые должны быть доступны во всех реализациях .NET, соответствующих определенной версии стандарта. Решение .NET Standard ориентировано на разработчиков библиотек. Библиотеку, предназначенную для версии .NET Standard, можно использовать в любой реализации .NET или Xamarin, поддерживающей ту версию стандарта.
.NET Standard входит в пакет SDK для .NET. Он также включен в Visual Studio, если выбрать рабочую нагрузку .NET.
.NET Standard 2.1 — это последняя версия .NET Standard, которая будет выпущена. Дополнительные сведения см. в разделе .NET 5+ и .NET Standard.
Поддерживаемые реализации .NET
.NET Standard 2.1 поддерживается следующими реализациями .NET:
- .NET Core 3.0 или более поздней версии (включая .NET 5 и более поздней версии)
- Mono 6.4 или более поздней версии
- Xamarin.iOS 12.16 или более поздней версии
- Xamarin.Android 10.0 или более поздней версии
.NET Standard 2.0 поддерживается следующими реализациями .NET:
- .NET Core 2.0 или более поздней версии (включая .NET 5 и более поздней версии)
- .NET Framework 4.6.1 или более поздней версии
- Mono 5.4 или более поздней версии
- Xamarin.iOS 10.14 или более поздней версии
- Xamarin.Mac 3.8 или более поздней версии
- Xamarin.Android 8.0 или более поздней версии
- Универсальная платформа Windows 10.0.16299 или более поздней версии
Новые возможности .NET Standard 2.1
.NET Standard 2.1 добавляет многие API в стандарт. Некоторые из них являются новыми API, и другие являются существующими API, которые помогают конвергентировать реализации .NET еще дальше. Список API, добавленных в .NET Standard 2.1, см. в статье .NET Standard 2.1 и 2.0.
Дополнительные сведения см. в записи блога .NET Standard 2.1 .
Новые возможности .NET Standard 2.0
.NET Standard 2.0 включает следующие новые функции.
Значительно расширенный набор интерфейсов API
Вплоть до версии 1.6 спецификация .NET Standard содержала сравнительно небольшой набор API-интерфейсов. Среди прочего, в их числе не было многих API, которые часто используются на платформах .NET Framework и Xamarin. Это усложняет разработку, так как разработчикам приходится искать подходящие средства для замены знакомых API при разработке приложений и библиотек для нескольких реализаций .NET. В .NET Standard 2.0 это ограничение устранено: в стандарт добавлены более 20 000 интерфейсов API, недоступных в предыдущей версии .NET Standard 1.6. Список интерфейсов API, добавленных в .NET Standard 2.0, см. в документе сравнения возможностей .NET Standard 2.0 и 1.6.
Вот лишь некоторые возможности, добавленные в пространство имен System .NET Standard 2.0:
- поддержка класса AppDomain;
- улучшенная поддержка работы с массивами из дополнительных элементов класса Array;
- улучшенная поддержка работы с атрибутами из дополнительных элементов класса Attribute;
- улучшенная поддержка календаря и дополнительных параметров форматирования для значений DateTime;
- дополнительные возможности округления Decimal;
- дополнительные функциональные возможности для класса Environment;
- расширенный контроль над сборщиком мусора через класс GC;
- улучшенная поддержка сравнения строк, перечисления и нормализации в классе String;
- поддержка перехода на летнее время в классах TimeZoneInfo.AdjustmentRule и TimeZoneInfo.TransitionTime;
- значительно улучшенная функциональность класса Type;
- улучшенная поддержка десериализации объектов исключений благодаря новому конструктору исключений с параметрами SerializationInfo и StreamingContext.
Поддержка библиотек .NET Framework
Многие библиотеки предназначены для .NET Framework, а не для .NET Standard. Но при этом большая часть вызовов в этих библиотеках направлена к интерфейсам API .NET Standard 2.0. Начиная с .NET Standard 2.0 библиотеки .NET Framework доступны из библиотек .NET Standard через оболочку совместимости. Этот уровень совместимости прозрачен для разработчиков, то есть от них не требуется никаких действий, чтобы пользоваться библиотеками .NET Framework.
Действует только одно требование: API, вызываемые библиотекой классов .NET Framework, должны быть включены в .NET Standard 2.0.
Поддержка Visual Basic
Теперь вы можете разрабатывать библиотеки .NET Standard на Visual Basic. В состав Visual Studio 2019 и Visual Studio 2017 версии 15.3 или более поздней с установленной рабочей нагрузкой .NET Core входит шаблон библиотеки классов .NET Standard. Разработчики Visual Basic, которые используют другие средства и среды разработки, могут создать проект библиотеки .NET Standard с помощью команды dotnet new. Дополнительные сведения см. в разделе Поддержка средств для библиотек .NET Standard.
Поддержка средств для библиотек .NET Standard
В выпуске .NET Core 2.0 и .NET Standard 2.0 visual Studio 2017 и .NET CLI поддерживаются средства для создания библиотек .NET Standard.
Если у вас установлен Visual Studio с рабочей нагрузкой для кроссплатформенной разработки .NET Core, вы можете создать проект библиотеки .NET Standard 2.0 с помощью шаблона проекта, как показано на рисунке ниже.
Если вы используете интерфейс командной строки .NET, следующая команда dotnet создает проект библиотеки классов, предназначенный для .NET Standard 2.0:
dotnet new classlib