Понятие сборки (assembly)
Структура сборки
Сборка – это единица повторного использования кода, в которой поддерживается система управления версиями и заложена система управления безопасности программного обеспечения
сборки самодостаточны, они содержат метаданные (metadata), которые несут в себе информацию о версии, зависимостях, типах, атрибутах
Структура сборки
Понятие манифеста
В состав манифеста входят:
• Данные о версии сборки,
• Список файлов, входящих в сборку. Для каждого файла хранится контрольная сумма, вычисляемая во время создания сборки при помощи криптографических хэш-функций
В момент исполнения приложения данные файлы проверяются по контрольным суммам, чтобы удостовериться в целостности файлов сборки, а так же в том, что файлы не были подменны другими с такими же именами (в том числе новыми версиями фалов),
• Имена и версии сборок, которые используются данной сборкой (зависимости от других сборок). Во время выполнения версии сборок строго сверяются, чтобы удостовериться в том, что загружена именно нужная сборка,
• Параметры, определяющие правила использования сборки
манифест
содержит полную системную информацию о сборке.
Манифест сборки содержит все метаданные, необходимые для задания требований сборки к версиям и удостоверения безопасности, а также все метаданные, необходимые для определения области действия сборки и разрешения ссылок на ресурсы и классы. Манифест сборки может храниться в PE-файле (EXE или DLL) с кодом MSIL или же в отдельном PE-файле, содержащем только данные манифеста.
предназначен для следующих задач:
перечисление файлов, составляющих сборку;
сопоставление ссылок на типы и ресурсы сборки с файлами, содержащими объявления и реализации этих типов и ресурсов;
перечисление других сборок, от которых зависит эта сборка;
обеспечение косвенного обращения пользователей сборки к подробностям ее реализации;
предоставление собственного описания сборки;
Многомодульные сборки
Процесс распределения исполняемого кода по нескольким файлам называется компоновкой. Файлы с исполняемым кодом, полученные в результате компоновки, называются модулями.
Локальные сборки
Локальные (приватные) сборки (библиотеки) поставляются с самим приложением, используются только им и храниться в его каталоге.
Совместные сборки
Это сборки, которые могут быть использованы сразу несколькими приложениями и которые, соответственно, "видны" всем.
Совместные сборки хранятся в глобальном кэше сборок (global assembly cache - GAC).