C#開發COM組件註冊

1、組件註冊 運行指令: gacutil /i DLL路徑\HK.NetPBDemo.dll 將這個DLL加入的全局緩存裏 regasm DLL路徑\HK.NetPBDemo.dll 註冊這個dllhtml

附:以上11個步驟便可完成COM組件在本機的環境下注冊並提供調用。緩存

一、 若要在其餘機器使用必須把編譯的「DLL」、「TLB」文件一併複製在目標機器(已安裝.Net Framework環境)並放在需調用的程序根目錄; 二、 在目標機器「c:\WINDOWS\Microsoft.Net\Framework\v4.0.3.319」下找到「RegAsm.exe」工具

三、 運行CMD打開指令窗,講路徑定位到「c:\WINDOWS\Microsoft.Net\Framework\v4.0.3.319」測試

運行指令:regasm.exe DLL路徑\ HK.NetPBDemo.dll。 【註冊成功】spa

2、 RegAsm安裝卸載辦法 安裝.net

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" /tlbcode

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

卸載blog

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進行註冊和卸載,參數詳見

3、 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。

4、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

相關文章
相關標籤/搜索