Регистрация сборок в COM
С помощью программы командной строки, которая называется средством регистрации сборок (Regasm.exe), можно регистрировать сборки для использования с моделью COM и отменять их регистрацию. Программа Regasm.exe добавляет сведения о классе в системный реестр, что обеспечивает прозрачное использование класса .NET Framework COM-клиентами. Класс RegistrationServices реализует эквивалентные функциональные возможности.
Управляемый компонент необходимо регистрировать в реестре Windows до того, как он будет активироваться из COM-клиента. В следующей таблице показаны разделы, которые программа Regasm.exe обычно добавляет в реестр Windows. (000000 указывает фактическое значение GUID.)
GUID | Description | Раздел реестра |
---|---|---|
CLSID | Идентификатор класса | HKEY_CLASSES_ROOT\CLSID\{000... 000} |
IID | Идентификатор интерфейса | HKEY_CLASSES_ROOT\Interface\{000... 000} |
LIBID | Идентификатор библиотеки | HKEY_CLASSES_ROOT\TypeLib\{000... 000} |
ProgID | Программный идентификатор | HKEY_CLASSES_ROOT\000…000 |
Под HKCR\CLSID\{0000... Ключ 0000} значение по умолчанию имеет идентификатор ProgID класса, а добавляются два новых именованных значения класса и сборки. Среда выполнения считывает Assembly из реестра и передает его в средство определения сборок среды выполнения. Средство определения сборок пытается найти сборку по таким сведениям о ней, как имя и номер версии. Средство определения сборок может находить сборки в следующих расположениях:
Глобальный кэш сборок (для сборок со строгим именем).
В каталоге приложения. Сборки, загруженные по пути приложения, доступны только из этого приложения.
По пути к файлу, указанному в параметре /codebase программы Regasm.exe.
Regasm.exe также создает ключ InProcServer32 под HKCR\CLSID\{0000... Ключ 0000}. В качестве значения по умолчанию этому разделу присваивается имя библиотеки DLL, которая инициализирует общеязыковую среду выполнения (Mscoree.dll).
Проверка записей реестра
COM-взаимодействие предоставляет стандартную реализацию фабрики класса для создания экземпляра любого класса .NET Framework. Клиенты могут вызывать DllGetClassObject для управляемой библиотеки DLL, чтобы получить фабрику класса и создать объекты так же, как и для любого другого COM-компонента.
В подразделе InprocServer32
вместо традиционной библиотеки типов COM указывается ссылка на библиотеку Mscoree.dll. Это указывает на то, что общеязыковая среда выполнения создает объект.