C#开发COM组件注册

一、组件注册 运行指令: gacutil /i DLL路径\HK.NetPBDemo.dll 将这个DLL加入的全局缓存里 regasm DLL路径\HK.NetPBDemo.dll 注册这个dll

附:以上11个步骤即可完成COM组件在本机的环境下注册并提供调用。

1、 若要在其他机器使用必须把编译的“DLL”、“TLB”文件一并复制在目标机器(已安装.Net Framework环境)并放在需调用的程序根目录; 2、 在目标机器“c:\WINDOWS\Microsoft.Net\Framework\v4.0.3.319”下找到“RegAsm.exe”

3、 运行CMD打开指令窗,讲路径定位到“c:\WINDOWS\Microsoft.Net\Framework\v4.0.3.319”

运行指令:regasm.exe DLL路径\ HK.NetPBDemo.dll。 【注册成功】

二、 RegAsm安装卸载办法 安装

C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\RegAsm.exe "C:\Program Files\MyDllFolderName\MyDllName.dll" /tlb

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe "C:\Program Files\MyDllFolderName\MyDllName.dll" /tlb

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe "C:\Program Files\MyDllFolderName\MyDllName.dll" /tlb

卸载

C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\RegAsm.exe "C:\Program Files\MyDllFolderName\MyDllName.dll" /u

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe "C:\Program Files\MyDllFolderName\MyDllName.dll" /u

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe "C:\Program Files\MyDllFolderName\MyDllName.dll" /u

针对不同的组件编译环境,选择相应的regasm进行注册和卸载,参数详见

三、 gacutil.exe的位置

如果我们需要用gacutil去注册dll ,就需要使用Visual Studio的Command Prompt,前提是需要安装Visual Studio,但是客户端上一般是没有安装VS的,所以你就需要将gacutil的文件夹拷贝到部署的客户机上。在C盘搜索gacutil.exe,我们会搜索到三个文件,其中有一个是正确的,路径如下: [html] view plaincopy C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools
(这是WIN7,VS2010环境下)。里面就有gacutil.exe。

四、RA0000错误:

在电脑上装有VS 2008和VS 2010.使用VS 2010编写了一个C# com组件:MyCom(基于.net framework4.0),然后使用VS 2008的命令提示工具运行命令:regasm MyCom,结果提示错误:RegAsm:error RA0000,“MyCOM”不是有效的.net程序集。开始百思不得其解。后来才醒悟到VS 2008的命令提示工具运行的regasm.exe是vs2008版本,它可能注册不了基于.net framework4.0的C# com组件。后来发现确实是这样的。如果一台机子上装有VS 2008和VS 2010,那么它就有两个版本的regasm.exe,分别存放的位置是C:\Windows\Microsoft.NET\Framework\v2.0.50727和C:\Windows\Microsoft.NET\Framework\v4.0.30319.使用VS 2010版本的regasm能注册vs2008编写的C# com组件,但是使用vs2008版本的regasm注册基于.net framework4.0的C# com组件。

**注:网上很多人都说组件的注册命令如:regasm /codebase XXX.dll 或者 regasm /codebase XXX.dll /regfile:xxx.reg 然后通过注册表导入到方式注册。但是经过无数次的测试,使用前面两种形式执行命令行,命令行是提示成功了,但通过RegDllView工具查看发现找不到,而实际组件确实没有注册。但把命令行改成了:regasm /code XXX.dll 居然成功了!!!! ,此外,若想注册为全局的dll,在执行regasm 之前 需要执行:gacutil -i XXX.dll **

参考: http://www.csharpwin.com/csharpspace/13221r9993.shtml http://blog.csdn.net/clever101/article/details/45420957

转载于:https://my.oschina.net/u/733649/blog/549139

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值