2012-01-05 132 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