运行时错误-2146234341(8013101b)从VB.NET到VB6的自动化错误,使用清单



我正试图在无reg的情况下从VB6客户端访问VB.NET DLL(.NET FX 4.0)。

我试着效仿http://msdn.microsoft.com/en-us/library/ms973915.aspx,但没有成功。我下载了(文章中的链接)源代码并进行了编译,没有成功(错误消息:运行时错误'-2146234341(8013101b)':自动化错误")。使用注册的VB.NET DLL从VB6 IDE运行有效。

我尝试了其他例子,其中.NET DLL被创建为COM类(使用VS2010中的"COM类"模板),嵌入或不嵌入引用DLL的清单,但对我来说什么都不起作用。

有人能提供一些简单的源代码,其中包含在VB6客户端中使用的VB.NET DLL(.NET FX v4)的清单示例吗?

提前非常感谢。

运行时错误'-2146234341(8013101b)':自动化错误

你的问题与清单无关,你需要先解决这个问题。错误代码为COR_E_NEWER_RUNTIME。换句话说,不能加载[ComVisible]类,因为它依赖于CLR版本4。程序已经加载了CLR版本2,很可能是因为另一个[ComVisible]类首先请求了它。它要求版本2。

您需要一个app.exe.config文件来强制加载CLR版本4,即使有人要求加载版本2。它应该是这样的:

<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
  </startup>
</configuration>

将其命名为与vb6 exe相同的名称(如"foo.exe.config"以匹配"foo.exe"),并将其放在与.exe相同的目录中。如果您想使用vb6 IDE调试使用此库的vb6代码,则还需要c:\program files\microsoft visual studio\vb98 中的vb6.exe.config

相关内容

最新更新