1

我们有一个由 VB6 可执行文件通过 COM 互操作使用的程序集。此程序集使用其他 .NET 程序集(不适用于 COM)。我们为我们的 VB6 应用程序定义了一个 .manifest,这样我们就可以在不注册的情况下使用 .NET 程序集。我们还为我们的 VB6 应用程序定义了一个带有探测设置的 .config,以在子目录(“bin”)中查找程序集。

如果我们将所有 .NET 程序集放在指定的子目录(“bin”)中,我们的应用程序将成功启动,并且我们可以使用它,直到 Interop-Assembly 调用其他程序集的某些代码。然后我们得到一个运行时错误“429”:ActiveX 组件无法创建对象。

当我们删除 .config 文件并将所有文件放在同一目录中时,应用程序按预期工作。

是否可以对 VB6 可执行文件使用的 .NET 程序集进行探测?有没有办法正确设置探测,以便成功定位其他组件?

.config

<configuration>
   <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         <probing privatePath="bin"/>
      </assemblyBinding>
   </runtime>
</configuration>
4

1 回答 1

1

好吧,看起来您的 .config 文件不起作用。当您尝试从 VB6 IDE 调试 VB6 应用程序时,可能会发生这种情况,CLR 将在错误的目录中查找 .config 文件。解决此问题所需的终极工具是fuslogvw.exe,它向您显示 CLR 在哪里寻找程序集。

于 2010-06-30T15:39:19.523 回答