Декларацию сборки можно хранить двумя способами. Если вы скомпилировали автономное приложение или DLL, декларация будет встроена в результирующий РЕ. Это называется однофайловой сборкой (single-file assembly). Можно сгенерировать и многофайловую сборку (multifile assembly), у которой декларация существует в виде отдельной сущности в составе сборки или прикрепляется к одному из модулей сборки.
Определение сборки в немалой степени зависит от того, как вы ее используете. С точки зрения клиента, сборка — это совокупность именованных модулей определенных версий, экспортируемых типов и (не обязательно) ресурсов. С точки зрения создателя сборки, это средство упаковки связанных модулей, типов и ресурсов, при этом экспортируется только то, что клиент может использовать. Отсюда следует, что именно декларация определяет соответствие между деталями реализации сборки и тем, что предназначено для использования клиентом. В декларации хранятся:
- имя сборки текстовое представление имени сборки;
- информация о версии эта строка содержит четыре части: старший (major) и младший (minor) номер версии, номер ревизии (revision) и компоновки (build);
- совместно используемое имя (не обязательно) и подписанный хэш сборки эта информация имеет отношение к развертыванию сборок (см. раздел “Развертывание сборок”);
- файлы список всех файлов в составе сборки;
- ссылки на внешние сборки это список всех внешних сборок, на которые есть прямые ссылки в декларации сборки;
- типы это список всех типов, содержащихся в сборке с указанием модуля, содержащего тип; именно эти данные использованы в примере отражения из главы 16 (он проходит по всем типам сборки);
- права доступа список явно запрещенных прав доступа к сборке;
- пользовательские атрибуты о создании пользовательских атрибутов см. главу 8; как и в случае типов, пользовательские атрибуты хранятся в декларации сборки для ускорения доступа при отражении;
- информация о продукте сюда входит название компании (Company), товарный знак (Trademark), название продукта (Product) и сведения об авторских правах (Copyright).