我有一个C#.NET 3.5项目,遗憾的是它依赖于几个VB6 ActiveX控件。
到目前为止,我已经能够愉快地访问ActiveX控件中定义的数据容器和方法,只需在项目中添加对控件的引用并正常引用它们。
然而,当我不得不调用一个返回VBA.Collection的方法时,我遇到了麻烦。
我的代码将编译没有问题,但在运行时我收到以下错误:
无法加载文件或程序集“Interop.VBA,Version = 6.0.0.0,Culture = neutral,PublicKeyToken = null”或其依赖项之一。系统找不到指定的文件。
我在项目中引用了Interop.VBA(版本6.0.0.0)和Interop.VBRUN(版本6.0.0.0),有什么想法吗?
我无法提供具体代码,它包含在NDA中。
但是,这里是来自对象浏览器的示例代码,其名称已更改以保护不那么无辜;)
我可以从我的代码中引用以下属性和方法:
ReturnConstants GoodMethod();
string prop1
ReturnConstants prop2
如果我尝试可以调用此方法,我会在运行时收到上面的错误消息:
Collection BadMethod();
因此调用返回导致问题的VBA.Collection的方法。 这些是我无法控制的第三方控件,它们不会在.net
中重写编辑:出于兴趣,我去了VS2010尝试了一个快速虚拟项目,并且按预期工作得很好,所以看起来这可能是VS2012的一个问题。我看过一些帖子暗示2012年没有正确创建VBA的interops,所以我会去看看我能找到的......
答案 0 :(得分:2)
感谢@Jeremy Thompson让我走上正轨,运行进程监视器向我显示我的应用程序无法找到interop.VBA.dll文件,一旦修复了一切正常工作。不知道为什么这在2010年而不是2012年开箱即用,但很高兴有一个解决方案