Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Библиотеки классов — это концепция общей библиотеки для .NET. Они позволяют компонентизировать полезные функциональные возможности в модули, которые могут использоваться несколькими приложениями. Они также можно использовать в качестве средства загрузки функциональных возможностей, которые не нужны или не известны при запуске приложения. Библиотеки классов описаны с помощью формата файла сборки .NET.
Существует три типа библиотек классов, которые можно использовать:
- Библиотеки классов, зависящие от платформы, имеют доступ ко всем API-интерфейсам определенной платформы (например, .NET Framework в Windows), но могут использоваться только приложениями и библиотеками, предназначенными для этой платформы.
- Переносимые библиотеки классов имеют доступ к подмножество API и могут использоваться приложениями и библиотеками, предназначенными для нескольких платформ.
- Библиотеки классов .NET Standard — это слияние концепции конкретной платформы и переносимой библиотеки в одну модель, которая обеспечивает лучшее из обоих.
Библиотеки классов, зависящие от платформы
Библиотеки, зависящие от платформы, привязаны к одной платформе .NET (например, .NET Framework в Windows) и поэтому могут принимать значительные зависимости от известной среды выполнения. Такая среда предоставляет известный набор API (.NET API и ОС API) и сохраняет и предоставляет ожидаемое состояние (например, реестр Windows).
Разработчики, создающие библиотеки для конкретной платформы, могут полностью использовать базовую платформу. Библиотеки будут работать только на данной платформе, что делает проверки платформы или другие формы условного кода ненужными (за исключением случаев, когда код используется для нескольких платформ из одного источника).
Библиотеки, зависящие от платформы, были основным типом библиотеки классов для .NET Framework. Несмотря на то, что появились другие реализации .NET, библиотеки, зависящие от платформы, остаются доминирующим типом библиотеки.
Переносимые библиотеки классов
Переносимые библиотеки поддерживаются в нескольких реализациях .NET. Они по-прежнему могут принимать зависимости от известной среды выполнения, однако среда является искусственной, которая создается пересечением набора конкретных реализаций .NET. Предоставляемые API и предположения платформы — это подмножество того, что будет доступно библиотеке для конкретной платформы.
При создании переносимой библиотеки вы выбираете конфигурацию платформы. Конфигурация платформы — это набор платформ, которые необходимо поддерживать (например, .NET Framework 4.5+, Windows Phone 8.0+). Чем больше платформ вы хотите поддерживать, тем меньше API и меньше предположений о платформе вы можете делать, сводя всё к самому низкому общему знаменателю. Эта характеристика в начале сбивает с толку, так как люди часто думают, что "больше лучше", но обнаруживают, что поддержка большего числа платформ ведет к уменьшению количества доступных API.
Многие разработчики библиотеки переключились с создания нескольких библиотек для конкретной платформы из одного источника (с помощью директив условной компиляции) на переносимые библиотеки. Существует несколько подходов к доступу к специфической функциональности платформы в переносимых библиотеках, при этом техника "замены приманки" на данный момент является наиболее широко принятой.
библиотеки классов .NET Standard;
Библиотеки .NET Standard — это замена концепций конкретных платформ и переносимых библиотек. Они зависят от платформы в том смысле, что они предоставляют все функциональные возможности от базовой платформы (нет искусственных платформ или пересечений платформ). Они переносятся в том смысле, что они работают на всех вспомогательных платформах.
.NET Standard предоставляет набор контрактов библиотеки. Реализации .NET должны поддерживать каждый контракт полностью или не полностью. Таким образом, каждая реализация поддерживает набор контрактов .NET Standard. Следствие заключается в том, что каждая библиотека классов .NET Standard поддерживается на платформах, которые поддерживают её контрактные зависимости.
.NET Standard не предоставляет всю функциональность .NET Framework (и не является целью), однако библиотеки предоставляют гораздо больше API, чем переносимые библиотеки классов.
Следующие реализации поддерживают библиотеки .NET Standard:
- .NET Core
- Платформа .NET Framework
- Моно
- Универсальная платформа Windows (UWP)
Дополнительные сведения см. в .NET Standard.
Библиотеки классов Mono
Библиотеки классов поддерживаются в Mono, включая три типа библиотек, описанных ранее. Mono часто рассматривается как кроссплатформенная реализация .NET Framework. В частности, это связано с тем, что библиотеки .NET Framework для платформы могут выполняться в среде выполнения Mono без изменения или повторной компиляции. Эта характеристика существовала до создания перемещаемых библиотек классов, поэтому была очевидным выбором для обеспечения двоичной переносимости между .NET Framework и Mono (хотя это работало только в одном направлении).