我们有一个由第三方创建的 .NET dll“A”。它通过 tlb 向我们的 VB6 exe 应用程序公开类。
我们还有自己的 .NET dll“B”,它引用 .NET dll“A”。 “B”还通过 tlb 向我们的 VB6 exe 应用程序公开类。
现在,VB6 应用程序在 VB6 代码中使用任一库中的类都没有问题,直到我们尝试调用“B”中具有“A”参数类型的函数为止。在这种情况下,我们会收到错误 430 或错误提示"unable to cast com object of type 'system.__comobject' to type 'Type.From.Dll.A'"
可能是什么原因造成的?这是正常的吗?
正如你所说,你的问题是不同的NET版本。
在版本 4 中,NET 团队引入了进程内并行执行
这样您就可以在应用程序中运行不同版本的 CLR。
但这不是您想要的,所以我认为您应该使用 app.config 文件关闭此功能:
<?xml version="1.0"?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>
</configuration>
请注意,当您使用 VB6 IDE 时,需要 app.config 的进程是 VB6.exe,因此我还将该 app.config 复制到 VB6 文件夹并将其重命名为 VB6.exe.config。看这个答案
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)