Регистрация сборок в COM

С помощью программы командной строки, которая называется средством регистрации сборок (Regasm.exe), можно регистрировать сборки для использования с моделью COM и отменять их регистрацию. Программа Regasm.exe добавляет сведения о классе в системный реестр, что обеспечивает прозрачное использование класса .NET Framework COM-клиентами. Класс RegistrationServices реализует эквивалентные функциональные возможности.

Управляемый компонент необходимо регистрировать в реестре Windows до того, как он будет активироваться из COM-клиента. В следующей таблице показаны разделы, которые программа Regasm.exe обычно добавляет в реестр Windows. (000000 указывает фактическое значение GUID.)

Идентификатор GUID Описание Раздел реестра
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 класса, и добавляются два новых именованных значения, Class и Assembly. Среда выполнения считывает Assembly из реестра и передает его в средство определения сборок среды выполнения. Средство определения сборок пытается найти сборку по таким сведениям о ней, как имя и номер версии. Средство определения сборок может находить сборки в следующих расположениях:

  • Глобальный кэш сборок (для сборок со строгим именем).

  • В каталоге приложения. Сборки, загруженные по пути приложения, доступны только из этого приложения.

  • По пути к файлу, указанному в параметре /codebase программы Regasm.exe.

Regasm.exe также создает ключ InProcServer32 в HKCR\CLSID\{0000... Ключ 0000}. В качестве значения по умолчанию этому разделу присваивается имя библиотеки DLL, которая инициализирует общеязыковую среду выполнения (Mscoree.dll).

Проверка записей реестра

COM-взаимодействие предоставляет стандартную реализацию фабрики класса для создания экземпляра любого класса .NET Framework. Клиенты могут вызывать DllGetClassObject для управляемой библиотеки DLL, чтобы получить фабрику класса и создать объекты так же, как и для любого другого COM-компонента.

В подразделе InprocServer32 вместо традиционной библиотеки типов COM указывается ссылка на библиотеку Mscoree.dll. Это указывает на то, что общеязыковая среда выполнения создает объект.

См. также