从VB6 IDE调用Comwrapped Net代码失败,在Win7中“ActiveX Component can not create object”,但在WinXP中不能创建对象

问题描述:

我们正在成功使用RegFree Com一年多来创建混合VB6/VB.Net程序。 因为我们现在想在Net 4.5中开发一些组件,所以我们必须从Win7开始使用VB6 IDE,我们最初是从WinXP开发的。从VB6 IDE调用Comwrapped Net代码失败,在Win7中“ActiveX Component can not create object”,但在WinXP中不能创建对象

问题是,从WinXP使用VB6 IDE的完全相同的RegFree Com配置在Win7中无法正常工作(安装编译后的可执行文件完美无瑕)。我们使用Fuslogvw.exe和SxSTrace.exe,我篡改了Windows日志,但是没有错误信息可以解释为什么对象的实例化失败的表面。那么,还有什么能做些什么来找到这个问题的原因是什么?

+0

前几天我们刚刚看到这个问题吗? Visual Studio IDE(包括VB6)必须始终运行提升。即使在目标系统上使用免注册的输出,也必须在开发人员机器上安装和注册开发中使用的ActiveX库。 – Bob77

+0

@ Bob77我可以向你保证,我们从未在我们的WinXP开发机器上注册过网络包装器。如果在Win7上必须完成,这将是非常糟糕的,因为许多版本的网络代码都经过了测试,并且会威胁到地狱...... – Dabblernl

+0

如果这是真的,我会感到惊讶。 IDE如何运行找出要使用的程序集?对于已编译的程序,应用程序清单在条目中包含此信息。 – Bob77

This problem was mentioned before on SO in 2010,然后将溶液运行在WinXP SP2兼容模式VB6的IDE(如管理员)。该解决方案并没有为我工作。这似乎WinXP以不同的方式实现了RegFree Com,所以registering with regasm using the /tlb directive现在是必要的

Bob警告不要使用manifest作为VB6.exe来测试用于Ne的Com封装t组件。尽管如此,我们已经使用这种技术一年以上,没有任何问题。