http://topic.csdn.net/t/20050902/16/4246248.html
如何生成可从 COM 客户端调用的 .NET COM 服务器
本节解释如何生成和安装将从 COM 应用
程序
使用的托管代码。生成过程包括以下步骤:
编写和编译托管代码。
使用 tlbexp.exe 实用工具为程序集生成类型库。
安装和注册程序集。
编写和编译引用程序集中类型的 COM 代码。
编写和编译托管代码
在开始生成将从 COM 使用的程序集之前,重要的是要了解公共
语言
运行库的互操作性服务的限制。请参见互操作性入门,以获得关于这些限制的确切内容的详细信息。
如果您的托管程序集打算用来在几个应用程序之间进行共享,那么请确保该程序集有一个强名称,以便能将其安装到全局程序集缓存中(请参见如何创建具有强名称的程序集)。如果程序集没有强名称,则它只能用于单个应用程序。
编写完托管代码后,编译
过程
就与其他任何托管代码的编译过程一样了。
生成类型库
大多数非托管应用程序的开发工具都要求先有一个类型库,然后您才能引用外部类型。可使用 tlbexp.exe 从程序集生成类型库,tlbexp.exe 将生成一个 .tlb 文件,非托管开发工具此后即可引用该文件。
tlbexp TestServer.dll
例如,使用 Visual Basic 6.0 可以从“项目/引用”对话框来引用 .tlb 文件。在 Visual C++ 6.0 中,可以使用 #import 语句将类型定义从类型库直接导入到 C++。一旦向项目添加了对类型库的引用,就可从非托管代码引用在该库中定义的类型。
安装和注册程序集
为了从非托管代码真正创建托管类型,需要在全局程序集缓存 (GAC) 中安装该程序集,并将其注册以便从 COM 使用。
可使用 gacutil.exe 实用工具在全局程序集缓存中安装程序集。可使用 /u 选项来卸载程序集。
gacutil /i TestServer.dll
如果程序集要由单个应用程序专用,则可将其直接复制到该应用程序目录中(而不是将该程序集安装在 GAC 中)。专用程序集不需要强名称,但是必须将其注册以便从 COM 使用。
可使用 regasm.exe 实用工具来注册程序集。可使用 /u 选项来卸载程序集。
regasm TestServer.dll
编写和编译非托管代码
程序集一旦完成注册并正确安装后,就可从 COM 使用程序集中定义的类型,就像使用
正常
的 COM 类型一样。例如,可通过调用 CoCreateInstance API,或者通过从 Visual Basic 或脚本语言调用 CreateObject 或 GetObject 来创建新对象。请参见本节余下的示例以获得具体的编码细节。