繁体   English   中英

在VB6应用程序中,ac#dll的CreateObject仅在IDE中“ActiveX组件无法创建对象”失败

[英]In VB6 application, CreateObject for a c# dll fails with “ActiveX component can't create object” in IDE only

我有需要在VB6中使用的C#程序集。 我已经在以前的机器/操作系统上工作,但在我目前的Windows 10机器上,我无法在VB6 / VS6 IDE中调试时使用它。 每当我点击时:

Set interop = CreateObject("BTR.Core.Interop.Activator")

我收到一个'ActiveX组件无法创建对象'。 错误。

如果我运行编译的VB6应用程序,一切正常。 所以它必须是关于VB6 / VS6 IDE的某个权限问题。

我发现其他帖子提到确保使用32位版本的regasm并且我已经尝试了regasmC:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\RegAsm.exe无济于事。

因为它在我运行编译的VB6应用程序时工作(并且由于应用程序和VB6应用程序都在以前的机器上工作),我认为这证明将我的C#dll暴露给COM的所有设置都是正确的,但我很高兴挖掘如果有人认为这是相关的更多细节。

我看到的唯一可疑的事情就是这篇文章( 从.NET程序集创建对象时VB6中的后期绑定运行时错误 )讨论了运行regasm后注册表中应该包含的内容。 我的所有设置都在WOW6432NODE键中

HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes\\WOW6432Node\\CLSID\\{2942ED53-BBC4-311D-9840-1FE610885592}

所以不确定是否存在某种32/64位冲突或者是什么。 任何建议表示赞赏。

好吧,我找到了解决方案。 我不确定它是不是正确的。 但我发现其他类似于这个问题的帖子谈到了用/tlb参数运行regasm来创建一个类型库,然后在VB6中引用它。 当我将应用程序部署到另一台机器时,我不想拥有该引用,所以我忽略了这些建议。

最后,我决定尝试使用该参数并引用类型库,然后VB6 IDE调试工作。

但是奇怪的部分(对我来说很好)是,然后我删除了引用,VB6 IDE继续工作。 所以,不知何故,在我删除引用后,在IDE中运行时,在VB6中添加引用确实能够使其工作。

希望这可以帮助其他任何可能在新的Windows操作系统上维护VB6应用程序的人。

暂无
暂无

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

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