Chr*_*ert 2 vb.net vb6 com interop vb6-migration
我在VB6中有一个EXE,它调用最近升级到VB.Net的DLL.这部分工作正常,但我遇到的问题与定位VB.Net DLL引用的另一个COM DLL的互操作有关.
概述:EXE(VB6)调用DLL(VB.Net)的方法A,没有问题.DLL的方法A调用第三方DLL(COM)的方法B,它得到一个错误,就是无法找到COM DLL的互操作文件.
我已经使用测试UI在VB.Net中直接测试,在VB.Net DLL中调用相同的方法A,一切正常.我目前对造成这个问题的原因感到茫然.
谢谢,克里斯
我终于找到了问题的答案.所有的说法和完成,问题是互操作程序集是框架版本4.0而不是框架版本2.0.Visual Studio出于某种原因以这种方式创建它们,因此我必须使用Visual Studio 2008来创建它们的新版本.
找到这个的过程(其中大部分已在上面说明,但在此重复以获得帮助)是将所有VB.NET dll和interop程序集dll放在VB6 exe的目录中.(我为每个子文件夹创建了子文件夹,以便以后更容易清理.)这仍然导致相同的错误,但是程序集生成器日志显示了错误的不同原因.这次它能够毫无问题地加载组件,但无法完成组件的设置.
研究这个让我想到使用ILSpy检查互操作程序集的框架版本,以找出它们是版本4.0而我的dll是版本2.0.
最初我尝试在Visual Studio 2017中重新创建它们,因为我的项目使用框架2.0,但由于某种原因它仍然将它们创建为框架4.0.然后我尝试在Visual Studio 2008中,它能够创建正确的框架2.0版本的互操作程序集,现在一切都按预期工作.