background image

的 DLL 文件,却有很多不同的方法。这里,就是一种,以 COM 的形式暴露给 OS。

2. 这是技术核心,通过 Tlbxp.exe 工具,把 DLL 文件导出成组件(COM 组件)类型库,

也就是:把中间语言可以使用的 DLL 文件,通过工具,导出成 COM 可以使用的数
据。

3. 注册,还有一个工具 regasm.exe,可以把 DLL 向 OS(注册表)以 COM 的形式注册

对象。这样 OS 里的 COM 运行环境就知道系统里有一个对象,可以用 GUID 来标识
并生成和使用。

4. 以 COM 的方式实例化.net 对象,先是应用程序向 COM 运行环境请求,要以生成一个

对象(GUID 标识)。COM 运行环境通过注册信息找到 COM 类型数据库,然后通
过.net 的 CCW(COM Callable Wrapper)(COM 可调用包装)来访问 .net 下的
DLL 文件,然后生成.net 对象,再返回给 COM 运行环境。而 COM 运行环境再以
COM 的形式把.net 对象返回给应用程序。然后应用程序就像访问 COM 一样的来访问.
net 对象。

因此,.net 不能开发正真的 COM,只是对.net 对象进行一个封装,然后以 COM 的形

式暴露给 OS,让 OS 里的其它应用程序也可以像访问 COM 那样来访问.net 对象。而本身
的.net 对象还是要.net 环境来支持的。

好了,知道了它的原理后,我们就明白可以做什么事了。下面,我们就是如何来做事了。

第 3 部份,最简单的方法来暴露.net 对象(VS2003)

这个方法很简单,就是做一个 Library 项目,然后把编译选项设定为 Interop 交互为

true.