【发布时间】:2019-06-02 14:03:45
【问题描述】:
我编写了一个 .Net 库,它封装了我的一些需要与遗留系统交互的业务逻辑。这个库的目的是公开一个 COM 接口,以便我可以使用 VBA 从 Office 应用程序调用它。
我已经完成了使用带有 /codebase /tlb 标志的 64 位 Regasm.exe 注册它所需的一切。它在我的 Office 应用程序中可见,甚至在智能感知中显示。但是,我不断收到“ActiveX 组件无法创建对象”错误。
为了尝试确定 COM 接口的设置/配置中是否存在错误,我创建了一个单独的 .Net 库作为我的解决方案的一部分,其中只有一个基本类和方法来返回“Hellow World”。这实际上按预期工作,即我在 VBA 应用程序的“引用”对话框中注册它,并可以实例化它并运行“HelloWorld”方法。
Dim simple as SimpleInterface.MyClass
Set simple = New SimpleInterface.MyClass
MsgBox simple.HelloWorld("Say Hello")
然后我在我的新基本 VS 项目中引用我想要的项目(业务逻辑)并在此处调用一个方法,然后在我的简单项目中创建另一个方法以公开为 COM 接口。我按照上面的方法取消注册dll并注册。
然后在我的 VBA 应用程序中取消选择 .tlb 文件,关闭它重新打开它,然后重新引用它,然后尝试运行代码。这是我得到“ActiveX 组件无法创建对象”的时候。我假设这与我的项目中的依赖 dll 有关,但我不确定,因为错误的细节很少。
我不确定我应该在这里做什么?我是否需要注册所有其他依赖的 dll,即我有大约 2 或 3 个外部 dll,我只是在 VS 项目中引用它们?有人可以告诉我如何找到更多详细信息,即哪个是确切的违规 dll?
【问题讨论】: