如何将.Net开发的DLL注册为COM(转)

有时,我们想要将.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)

http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cptools/html/cpgrfassemblyregistrationtoolregasmexe.asp

强名称工具 (Sn.exe)

http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cptools/html/cpgrfassemblyregistrationtoolregasmexe.asp

原文地址:https://www.cnblogs.com/smartstar/p/1957477.html