繁体   English   中英

vb6 dll可以使用gac中的.net comvisable dll吗

[英]Can vb6 dll use a .net com visable dll that is in the gac

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

如果您使用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死机的好方法,但通常不会在开发计算机上使用它,因为它会污染计算机的GAC。 使用Regasm / codebase选项将其注册到DLL所在的目录中,然后不需要GAC。 执行此操作时,您确实会从Regasm得到警告,试图提醒您冒着DLL Hell的危险。 但这对您的用户是一个问题,对您而言不是。 因此,您可以放心地忽略该警告。

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

如果通过脚本执行此操作,则可以这样做:

  1. 将您的dll复制到一个文件夹,例如c:\\ program files \\ myproduct \\ mydll.dll
  2. 使用regasm为com互操作注册您的dll
  3. 使用gacutil放入GAC

如果使用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/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM