Атрибуты, сборки, рефлексия
Сборка. Класс Assembly
Класс Assembly определяет Сборку – основной строительный блок Common Language Runtime приложения. Как строительный блок CLR, сборка обладает следующими основными свойствами:
- возможностью многократного применения;
- versionable (версифицированностью);
- самоописываемостью.
Эти понятия являются ключевыми для решения проблемы отслеживания версии и для упрощения развертывания приложений во время выполнения.
Сборки обеспечивают инфраструктуру, которая позволяет во время выполнения полностью "понимать" структуру и содержимое приложения и контролировать версии и зависимости элементов выполняемого приложения.
Сборки бывают:
- частными (private). Представляют наборы типов, которые могут быть использованы только теми приложениями, где они включены в состав. Располагаются в файлах с расширениями .dll (.exe) и .pdb (program debug Database). Для того чтобы использовать в приложении частную сборку, ее надо ВКЛЮЧИТЬ в приложение, то есть разместить в каталоге приложения (application directory) или в одном из его подкаталогов;
- общего доступа (shared). Также набор типов и ресурсов внутри модулей (модуль – двоичный файл сборки). Предназначены для использования НЕОГРАНИЧЕННЫМ количеством приложений на клиентском компьютере. Эти сборки устанавливаются не в каталог приложения, а в специальный каталог, называемый Глобальным Кэшем Сборок (Global Assembly Cache – GAC). Кэш на платформе Windows XP усилиями специальной утилиты принимает вид каталога (путь ...\WINDOWS\assembly). Таким образом, в .NET ВСЕ совместно используемые сборки собираются в одном месте. Имя ("общее имя" или "строгое имя") сборки общего доступа строится с использованием информации о версии сборки.
Загружаемая сборка строится как БИБЛИТОТЕКА КЛАССОВ (файл с расширением .dll), либо как выполняемый модуль (файл с расширением .exe).
Если это файл с расширением .dll, то в среде Visual Studio ее использование поддерживается специальными средствами среды. Это "полуавтоматическая" загрузка частной сборки в Reference приложения (Add Reference...). Сборки, располагаемые в .exe-файлах, особой поддержкой для включения сборки в состав приложения не пользуются.
Для анализа сборки применяется утилита IlDasm.exe, которую можно подключить к непосредственно вызываемому из среды разработки Visual Studio списку утилит.
Ниже представлены члены класса сборки.
CodeBase | Возвращает местонахождение сборки, указанное первоначально, например в объекте AssemblyName |
EntryPoint | Возвращает точку входа для этой сборки |
EscapedCodeBase | Возвращает URI, предоставляющий базовый код, включая escape-знаки |
Evidence | Возвращает свидетельство для этой сборки |
FullName | Возвращает отображаемое имя сборки |
GlobalAssemblyCache | Возвращает значение, показывающее, была ли сборка загружена из глобального кэша сборок |
ImageRuntimeVersion | Возвращает версию общеязыковой среды выполнения (CLR), сохраненной в файле, который содержит манифест |
Location | Возвращает местонахождение в формате базового кода загруженного файла, содержащего манифест, если для него не было теневого копирования |
ModuleResolve | Возникает, когда загрузчик классов общеязыковой среды выполнения не может обработать ссылку на внутренний модуль сборки, используя обычные средства |
Finalize (унаследовано от Object ) | Переопределен. Позволяет объекту Object попытаться освободить ресурсы и выполнить другие завершающие операции, перед тем как объект Object будет уничтожен в процессе сборки мусора. В языках C# и C++ для функций финализации используется синтаксис деструктора |
MemberwiseClone (унаследовано от Object ) | Создает неполную копию текущего Object |