向 COM 注册程序集

更新:2007 年 11 月

您可以运行一个叫做程序集注册工具 (Regasm.exe) 的命令行工具来注册或注销与 COM 一起使用的程序集。Regasm.exe 会将有关类的信息添加到系统注册表中,以便 COM 客户端透明地使用 .NET 类。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,并且会添加两个新的命名值:“类”值和“程序集”值。运行库将从注册表中读取“程序集”值,并将其传递给运行库程序集冲突解决程序。程序集冲突解决程序将根据程序集信息(如名称和版本号)尝试查找程序集。为便于程序集冲突解决程序查找程序集,程序集必须位于以下某一位置中:

  • 全局程序集缓存(必须是强名称的程序集)。

  • 在应用程序目录中。从应用程序路径加载的程序集只能通过该应用程序进行访问。

  • 沿使用 /codebase 选项指定的、指向 Regasm.exe 的文件路径。

Regasm.exe 还会在 HKCR\CLSID\{0000…0000} 项下创建 InProcServer32 项。该键的默认值设置为初始化公共语言运行库的 DLL 的名称 (Mscoree.dll)。

检查注册表项

COM 互操作提供了标准的类工厂实现来创建任何 .NET Framework 类的实例。客户端可以通过对托管 DLL 调用 DllGetClassObject 来获取类工厂并创建对象,就像处理其他任何 COM 组件一样。

对 Mscoree.dll 的引用将替代传统的 COM 类型库,以指示公共语言运行库创建托管对象。

注册表项

请参见

任务

如何:从 COM 中引用 .NET 类型

概念

向 COM 公开 .NET Framework 组件

调用 .NET 对象

为 COM 访问部署应用程序