2012-08-14 90 views
0

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

回答

1

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

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

regasm foo.dll /tlb:foo.tlb 

现在,您可以在您的VB6项目中使用的类型库。在VB6 IDE中,使用“项目+引用”,单击“浏览”并导航到foo.tlb文件。

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

0

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

如果通过脚本做到这一点,你可以这样做:

  1. 您的DLL复制到文件夹,例如c:\ Program Files文件\ myProduct的\ MYDLL.DLL
  2. 使用regasm注册你的DLL文件COM互操作
  3. 使用GACUTIL摆在进入GAC

如果你使用Visual Studio安装项目: 1.添加全球Assemly缓存特殊的文件夹项目 2.设置dll的目标文件夹为GAC 3.将Register属性设置为vsdraCOM

如果您无法从VB6添加对.Net DLL的引用,请从.Net创建一个.tlb文件DLL使用tlbexp并添加对类型库的引用。

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