Бөлісу құралы:


Регистрация сборок с помощью COM

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

Управляемый компонент должен быть зарегистрирован в реестре Windows, прежде чем его можно будет активировать из COM-клиента. В следующей таблице показаны ключи, которые Regasm.exe обычно добавляет в реестр Windows. (00000 указывает фактическое значение 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. Среда выполнения считывает значение сборки из реестра и передает его в сопоставитель сборок среды выполнения. Сопоставитель сборок пытается найти сборку на основе сведений о сборке, таких как имя и номер версии. Чтобы сопоставитель сборок мог найти сборку, сборка должна находиться в одном из следующих местоположений:

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

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

  • По пути, указанному с помощью параметра /codebase, до Regasm.exe.

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

Изучение записей реестра

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

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

См. также