首页 文章

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

提问于
浏览
0

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

2 回答

  • 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的好方法,但您通常不会在dev计算机上使用它,因为它会污染计算机的GAC . 使用Regasm / codebase选项将其注册到存储DLL的目录中,然后不需要GAC . 当你这样做时,你会收到来自Regasm的警告,试图提醒你,你正冒着DLL地狱的风险 . 但这对您的用户来说是一个问题,而不是对您而言 . 所以你可以安全地忽略警告 .

  • 0

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

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

    • 将你的dll复制到一个文件夹,比如c:\ program files \ myproduct \ mydll.dll

    • 使用regasm注册你的dll for com interop

    • 使用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/

相关问题