C#开发COM组件注册

旧城冷巷雨未停 提交于 2019-12-04 20:54:01

一、组件注册 运行指令: 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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!