VB6应用程序中使用的类库的RegAsm

时间:2010-05-26 16:10:18

标签: vb6 regasm

简而言之,我已经为COM Interop构建了一个COM-Visible和Registered的C#类库。我编译了库,导致生成.dll和.tlb文件。

我有另一台运行VB6应用程序的机器。因此,我将.dll和.tlb文件复制到计算机上的C:/ Windows / system32文件夹中。然后我使用以下内容注册了这些文件:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm C:\Windows\system32\TestClass.dll /tlb:TestClass.tlb

文件注册成功后,我从VB6应用程序中添加了对Test.tlb文件的项目引用,然后我尝试在我的新引用类中调用一个方法,如下所示:

Dim myObject As TestNamespace.TestClass
Set myObject = New TestNamespace.TestClass
MsgBox (myObject.TestMethod())

它不起作用,我收到-2147024894自动化错误。

我读过我不应该将dll安装到像system32这样的私人文件夹中。我应该在GAC注册,或者我应该使用“/ codebase”选项在另一个位置注册:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm C:\TestClass.dll /tlb:TestClass.tlb /codebase

我有什么理由不使用system32吗?曾参与此项目的过去开发人员已将此VB6项目使用的汇编文件放入system32,似乎没有任何问题。

当我在system32位置注册我的dll时,我收到自动化错误。当我在另一个位置(即C:/)注册我的dll时,从VB6调用我的类库的方法按预期工作。是什么给了什么?

我应该提一下,我们不会使用GAC来注册任何DLL。这就是它的方式。

感谢任何帮助。

麦克

1 个答案:

答案 0 :(得分:1)

我在system32中使用regasm for dll没有任何问题。我总是使用/ Codebase开关,它将tlb的位置放在注册表中,这样VB6就不会混淆了。

有关详细信息,请参阅MSDN page

相关问题