2012-01-05 165 views
2

我用vb.net創建了一個com類庫。我已經用regasm註冊了dll。然後我導入並將其用於vb6項目。我注意到,如果我取消註冊庫並重新註冊它,那麼出現以下錯誤:com類庫註冊

運行時錯誤'-2147024894(80070002)':自動化錯誤。

爲了使庫再次可用,我必須在類中重新生成具有不同ClassId,InterfaceId,EventsId的庫,然後註冊新的dll。

這是故意發生的,這應該是功能還是我做錯了什麼?

在此先感謝。

PS:它也做同樣的事情,如果我用相同的文件覆蓋註冊的文件,或者如果我重命名它的文件夾,然後重新命名爲其以前的名稱。需要重新登記和重新登記。

+0

你用來註冊和取消註冊的確切命令行是什麼? regasm輸出說什麼 - regasm報告任何錯誤? – 2012-01-05 09:04:17

+0

regasm mypath \ mylib.dll。它正在成功註冊,否則根本無法工作。 – reven 2012-01-05 10:26:09

+0

什麼時候你註銷 - regasm的命令行輸出是什麼? – 2012-01-05 10:58:04

回答

4

您需要使用/codebase命令行註冊,如果你不安裝程序集到GAC時(它必須是強名稱要能做到這一點)更多信息

退房的Regasm reference

+0

要明確,是的,你應該使用'codebase'選項,並且不需要強命名。強名只需將其放在GAC中即可。 – tcarvin 2012-01-05 13:00:52

+0

@tcarvin - 不是根據MS文檔:'您使用/ codebase選項指定的assemblyFile參數必須是強名稱的程序集。「#: – 2012-01-05 13:13:45

+0

不,該文檔是相當錯誤的。強名稱的要求僅限於GAC。當你使用/ codebase(「你即將創建DLL地獄」)時,你會得到一個警告,但只要你在開發機器上這樣做,你就可以忽略它。 – 2012-01-05 14:39:37