vb6 dll能否使用gac中的.net com可视dll

vb6 dll能否使用gac中的.net com可视dll,.net,dll,com,vb6,com-interop,.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中,所以我认为这种方法不可能。这是可能的,但方法取决于您如何部署.Net dll 如果通过脚本执行,可以执行以下操作: 将dll复制到文件夹中,例如c:\program files\myproduct\mydl

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

这是可能的,但方法取决于您如何部署.Net dll

如果通过脚本执行,可以执行以下操作:

  • 将dll复制到文件夹中,例如c:\program files\myproduct\mydll.dll
  • 使用regasm为com互操作注册dll
  • 使用gacutil输入GAC
  • 如果使用Visual Studio安装项目: 1.将全局Assemly缓存特殊文件夹添加到项目中 2.将dll的目标文件夹设置为GAC 3.将寄存器属性设置为vsdraCOM

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


    这是一个指向该过程更详细描述的链接:

    如果您使用GAC或尝试从VB6 DLL项目中使用它,则该过程没有任何特殊之处会阻止其工作。如果您想编写早期绑定代码(实际的类型名,自动完成工作),那么VB6 IDE需要一个类型库。它们通常嵌入到DLL中,但.NET[ComVisible]程序集不是这样

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

     regasm foo.dll /tlb:foo.tlb
    
    现在可以在VB6项目中使用类型库。在VB6 IDE中,使用Project+引用,单击浏览并导航到foo.tlb文件

    还要注意的是,虽然GAC是避免DLL地狱的好方法,但您通常不会在您的开发人员机器上使用它,因为它会污染机器的GAC。使用Regasm/codebase选项将其注册到DLL存储的目录中,无需GAC。当你这样做的时候,你会收到Regasm的警告,试图提醒你你正在冒着地狱的危险。但这是你的用户的问题,不是你的问题。因此,您可以安全地忽略警告