vb6 dll可以使用gac中的.net com可见dll

时间:2012-08-14 09:09:51

标签: .net dll com vb6 com-interop

我有一个.Net COM可见dll和一个VB6 dll。我在GAC上注册了.Net dll并注册了VB6 dll。我的问题是VB6 dll可以引用GAC中的.Net dll。如果是,怎么办呢?通常我会在.Net dll上使用regasm,一切都会好的,但现在.Net dll在GAC中,所以我不认为这种方法是可行的。

2 个答案:

答案 0 :(得分:1)

如果您使用GAC或尝试从VB6 DLL项目中使用它,那么就没有什么特别的东西可以阻止它的工作。如果要编写早期绑定代码(实际类型名称,自动完成工作),那么VB6 IDE需要一个类型库。它们通常嵌入在DLL中,但.NET [ComVisible]程序集不是这种情况。

使用Tlbexp.exe或Regasm.exe的/ tlb命令行选项创建类型库。像:

 regasm foo.dll /tlb:foo.tlb

您现在可以在VB6项目中使用类型库。在VB6 IDE中,使用Project + References,单击Browse并导航到foo.tlb文件。

另请注意,尽管GAC是避免DLL Hell的好方法,但您通常不会在dev计算机上使用它,因为它会污染计算机的GAC。使用Regasm / codebase选项将其注册到存储DLL的目录中,然后不需要GAC。当你这样做时,你会收到来自Regasm的警告,试图提醒你,你正冒着DLL地狱的风险。但这对您的用户来说是一个问题,而不是对您而言。所以你可以放心地忽略警告。

答案 1 :(得分:0)

这是可能的,但该方法取决于您部署.Net DLL的方式。

如果你是通过脚本来做的,你可以这样做:

  1. 将您的dll复制到一个文件夹,例如c:\ program files \ myproduct \ mydll.dll
  2. 使用regasm为com interop注册您的dll
  3. 使用gacutil加入GAC
  4. 如果使用Visual Studio安装项目: 1.将Global Assemly Cache特殊文件夹添加到项目中 2.将dll的目标文件夹设置为GAC 3.将Register属性设置为vsdraCOM

    如果您在从VB6添加对.Net DLL的引用时遇到问题,请使用tlbexp从.Net dll创建.tlb文件,并添加对类型库的引用。

    这是指向流程的更详细说明的链接:http://www.simple-talk.com/dotnet/visual-studio/build-and-deploy-a-.net-com-assembly/