Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Сборки — это основные единицы развертывания, управления версиями, повторного использования, области активации и разрешений безопасности для приложений на основе .NET. Сборка — это коллекция типов и ресурсов, созданных для совместной работы и формирования логической единицы функциональности. Сборки представляют собой исполняемые файлы (.exe) или библиотеки динамических ссылок (.dll) и являются стандартными блоками приложений .NET. Они предоставляют общеязыковой среде выполнения информацию, необходимую для учета реализации типов.
В .NET и .NET Framework можно создать сборку из одного или нескольких файлов исходного кода. В .NET Framework сборки могут содержать один или несколько модулей. Таким образом, можно спланировать более крупные проекты, чтобы несколько разработчиков могли работать над отдельными файлами исходного кода или модулями, которые объединяются для создания одной сборки. Дополнительные сведения о модулях см. в статье "Практическое руководство. Создание многофайловой сборки".
Сборки имеют следующие свойства:
Сборки реализуются как файлы.exe или .dll .
Для библиотек, предназначенных для .NET Framework, можно совместно использовать сборки между приложениями, помещая их в глобальный кэш сборок (GAC). Прежде чем включить их в GAC, необходимо обязательно присвоить сборкам сильное имя. Дополнительные сведения см. в сборках со строгими именами.
Сборки загружаются в память только в случае необходимости. Если они не используются, они не загружаются. Поэтому сборки могут быть эффективным способом управления ресурсами в крупных проектах.
Вы можете программно получить сведения о сборке с помощью рефлексии. Дополнительные сведения см. в разделе "Отражение" (C#) или "Отражение" (Visual Basic).
Сборку можно загрузить для простого просмотра с помощью класса MetadataLoadContext в .NET и .NET Framework. MetadataLoadContext заменяет Assembly.ReflectionOnlyLoad методы.
Сборки в среде общего языкового выполнения (CLR)
Сборки предоставляют среду CLR с информацией, которую необходимо учитывать в реализации типов. В среде выполнения тип не существует вне контекста сборки.
Сборка определяет следующие сведения:
Код, который выполняется общей языковой средой выполнения (CLR). Каждая сборка может иметь только одну точку входа:
DllMain
,WinMain
, илиMain
.Граница безопасности. Сборка — это единица, в которой запрашиваются и предоставляются разрешения. Дополнительные сведения о границах безопасности в сборках см. в рекомендациях по безопасности сборок.
Граница типа. Идентичность каждого типа включает название сборки, в которой он находится. Тип
MyType
, который загружается в области одной сборки, не совпадает с типомMyType
, который загружается в области другой сборки.Граница области ссылок: манифест сборки содержит метаданные, используемые для разрешения типов и удовлетворения запросов ресурсов. Манифест задает типы и ресурсы для предоставления вне сборки и перечисляет другие сборки, от которых она зависит. Код общего языка (CIL) в переносимом исполняемом файле (PE) не будет выполняться, если он не содержит связанный манифест сборки.
Граница версии. Сборка — это наименьшая единица управления версиями в среде CLR. Все типы и ресурсы в одной сборке имеют версию как единицу. Манифест сборки описывает зависимости версии, указанные для любых зависимых сборок. Дополнительные сведения об использовании версий см. в разделе "Управление версиями сборок".
Единица развертывания: при запуске приложения должны присутствовать только сборки, которые изначально вызывает приложение. Другие сборки, такие как сборки, содержащие ресурсы локализации или служебные классы, можно получить по запросу. Этот процесс позволяет приложениям быть простыми и тонкими при первой загрузке. Дополнительные сведения о развертывании сборок см. в разделе "Развертывание приложений".
Параллельное выполнение. Дополнительные сведения о выполнении нескольких версий сборки см. в разделе "Сборки" и параллельное выполнение.
Создание сборки
Сборки могут быть статическими или динамическими. Статические сборки хранятся на диске в переносимых исполняемых файлах (PE). Статические сборки могут включать интерфейсы, классы и ресурсы, такие как растровые изображения, ФАЙЛЫ JPEG и другие файлы ресурсов. Вы также можете создавать динамические сборки, которые выполняются непосредственно из памяти и не сохраняются на диске перед выполнением. Динамические сборки можно сохранить на диск после их выполнения.
Существует несколько способов создания сборок. Вы можете использовать такие средства разработки, как Visual Studio, которые могут создавать .dll или .exe файлы. Средства в пакете SDK для Windows можно использовать для создания сборок с модулями из других сред разработки. Вы также можете использовать API среды CLR, например System.Reflection.Emitдля создания динамических сборок.
Компилируйте сборки, создавая их в Visual Studio, создавая их с помощью средств интерфейса командной строки .NET Core или создавая сборки .NET Framework с помощью компилятора командной строки. Дополнительные сведения о создании сборок с помощью .NET CLI см. в обзоре .NET CLI.
Замечание
Чтобы создать сборку в Visual Studio, в меню Сборка выберите Сборка.
Манифест сборки
У каждой сборки есть файл манифеста сборки . Как и оглавление, манифест сборки содержит следующее:
Идентификатор сборки (его имя и версия).
Таблица файлов, описывающая все остальные файлы, составляющие сборку, такие как другие сборки, которые вы создали и от которых зависят ваш файл .exe или .dll, файлы изображений или файлы Readme.
Список ссылок на сборку, который представляет собой список всех внешних зависимостей, таких как .dllили другие файлы. Ссылки сборки содержат ссылки как на глобальные, так и на частные объекты. Глобальные объекты доступны всем другим приложениям. В .NET Core глобальные объекты связаны с определенной средой выполнения .NET Core. В .NET Framework глобальные объекты находятся в глобальном кэше сборок (GAC). System.IO.dll является примером сборки в GAC. Частные объекты должны находиться на уровне каталога или ниже каталога, в котором установлено приложение.
Сборки содержат сведения о содержимом, управление версиями и зависимости. Поэтому приложения, использующие их, не должны полагаться на внешние источники, такие как реестр в системах Windows, для правильной работы. Сборки сокращают .dll конфликтов и упрощают развертывание приложений. Во многих случаях можно установить приложение на основе .NET, просто скопировав его файлы на целевой компьютер. Дополнительные сведения см. в манифесте сборки.
Добавьте ссылку на сборку
Чтобы использовать сборку в приложении, необходимо добавить ссылку на нее. При ссылке на сборку все доступные типы, свойства, методы и другие члены его пространств имен доступны приложению, как если бы их код был частью исходного файла.
Замечание
Большинство сборок из библиотеки классов .NET ссылаются автоматически. Если системная сборка не ссылается автоматически, добавьте ссылку одним из следующих способов:
- Для .NET и .NET Core добавьте ссылку на пакет NuGet, содержащий сборку. Используйте диспетчер пакетов NuGet в Visual Studio или добавьте <элемент PackageReference> для сборки в проект CSPROJ или VBPROJ .
- Для .NET Framework добавьте ссылку на сборку с помощью диалогового окна "Добавить ссылку " в Visual Studio или
-reference
в командной строке для компиляторов C# или Visual Basic .
В C# можно использовать две версии одной сборки в одном приложении. Для получения дополнительной информации см. extern alias.
Связанный контент
Заголовок | Описание |
---|---|
Содержимое сборки | Элементы, составляющие сборку. |
Манифест сборки | Данные в манифесте сборки и как они хранятся в сборках. |
Глобальный кэш сборок | Как GAC хранит и использует сборки. |
Сборки со строгим именем | Характеристики строго именованных сборок. |
Вопросы безопасности сборки | Как безопасность работает с сборками. |
Версионирование сборки | Обзор политики управления версиями .NET Framework. |
Размещение сборок | Где найти сборки. |
Сборки и параллельное выполнение | Одновременно используйте несколько версий среды выполнения или сборки. |
Выдача динамических методов и сборок | Создание динамических сборок. |
Как среда выполнения находит сборки | Как платформа .NET Framework разрешает ссылки на сборки во время выполнения. |
Ссылка
См. также
- Формат файла сборки .NET
- Дружественные сборки
- Эталонные сборки
- Практическое руководство. Загрузка и выгрузка сборок
- Практическое руководство. Использование и отладка выгрузки сборок в .NET Core
- Практическое руководство. Определение того, является ли файл сборкой
- Практическое руководство. Проверка содержимого сборки с помощью MetadataLoadContext