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

mar*_*tin 11 vb.net vb6 .net-4.0 regfreecom

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

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

我尝试了其他示例,其中.NET DLL被创建为COM类(使用VS2010中的"COM类"模板),嵌入或未嵌入引用DLL的清单,但没有任何对我有用.

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

非常感谢提前.

Han*_*ant 18

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

您的问题与清单没有任何关系,您需要先修复此问题.错误代码是COR_E_NEWER_RUNTIME.换句话说,你的[ComVisible]类无法加载,因为它依赖于CLR版本4.并且程序已经加载了CLR,版本2最有可能,因为另一个[ComVisible]类首先询问.它要求版本2.

您需要一个强制CLR版本4加载的app.exe.config文件,即使有人要求版本2.它应该如下所示:

<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
  </startup>
</configuration>
Run Code Online (Sandbox Code Playgroud)

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