有时,我们想要将.Net开发的DLL提供给ASP、VB等程序使用,可以采用下面的方法将程序集注册为COM。
1、开发环境下,在vs.net2003或2005的IDE环境中可以实现COM组件的自动注册,设置如下:项目名称->右键"属性"->配置属性->生成->选中"为Com Interop注册",编译即可。
2、用强名称的方式
(1)、创建强名字
sn –k MyCom.snk
并将强名字拷贝到工程目录下面
在AssembyInfo.cs修改对应的配置
[assembly: AssemblyKeyFile(@"http://www.cnblogs.com/MyCom.snk")]
[assembly:Comvisible(true)]
(2)、注册装配件
RegAsm MyCom.dll /tlb:MyCom.tlb
(3)、将装配件加入GAC
gacutil -i MyCom.dll
3、不用强名称的方式
regasm MyCom.dll /tlb:MyCom.tlb /CodeBase
注意CodeBase的使用,如果你要注册的.NET程序集没有强名称的话,那么在使用regasm注册的时候就要加上/CodeBase,这是指设置注册表中的基本代码,也就是记录下dll的路径。
注册完毕,创建对象及使用方法与上面相同:
set mydll = Server.CreateObject("MyCom.Object")
mydll.method
如调用OA4中的加密解密工具,ASP代码如下:
<%
Dim objEncryTool
Dim strTemp
Set objEncryTool = Server.CreateObject("RoutData.DevBase.BaseTools.EncryTool")
strTemp = "Abc-jian"
Response.Write strTemp & "<br>"
strTemp = objEncryTool.En(strTemp)
Response.Write strTemp & "<br>"
strTemp = objEncryTool.De(strTemp)
Response.Write strTemp & "<br>"
Set objEncryTool = nothing
%>
注意,要发布的类方法不能为static
程序集注册工具 (Regasm.exe)
强名称工具 (Sn.exe)