用Visual C#生成的DLL文件已经和以前的DLL文件有了本质上的区别。VisualC、Delphi或者VB等编程语言来编写的DLL文件,在编译完成以后,产生DLL文件已经是一个可以直接供计算机使用的二进制文件。但用Visual C#编译器生成的受托管代码虽然也是二进制文件,但不是可以直接供计算机使用的原始代码,实质上是一种中间语言(IL)代码,需要经过NGWS (Next
Generation Windows Services) runtime的即时编译器(即JIT)进行编译。
一 新建项目
打开 VisualStudio2008 ,新建一项目,取名CSharpCOMDemo,项目类型【Visual C#】-【类库】
新建一个类取名为ClassMath,输入如下代码
注意类上的属性,对com可见和生成com类型。
二 生成项目
修改项目属性,使项目生成的同时生成 tlb类型库
右键点击项目-【属性】-【生成】-【为COM互操作注册】前打勾
这里也可点击【签名】为程序集签名。签名方法也比较简单
操作方法:【签名】-【为程序集签名】打勾,选择密钥文件即可。如果没有密钥文件,这里也可方便地新建一个密钥文件。
本例不作签名。
三 注册类型库
输入regasm CSharpCOMDemo.dll /tlb: CSharpCOMDemo.tlb /codebase,将类型库导入到注册表。提示成功注册了类型,说明操作成功,此时TestCom .dll可以作为一个com来使用。
四 添加dll到GAC(全局程序集缓存 )
输入gacutil /i CSharpCOMDemo.dll,将此.net程序集添加到GAC。将程序集添加到GAC后以让系统管理员通过用户权限来控制Assembly的访问。本例也不做添加。