.net - VB6 App + .Net 组件作为编译应用程序工作,但不在 VB6 IDE 中工作

标签 .net vb6 interop

我有一个使用 .Net 组件(通过 VB6 应用程序中的 .tlb 引用)的 VB6 应用程序,该组件在作为编译应用程序执行时工作正常,但在某个时刻它会从 VB6 IDE 产生错误正在尝试使用 .NET 组件。

我应该注意到,当 .NET 组件调用第三方报告组件时会发生错误。该错误特定于报告组件。关于无法从 String 转换为其他类型的问题。

.tlb 与应用程序可执行文件位于同一位置,因此我不知道为什么会出现问题。其中一个 DLL 有一个 .config,但它仅指定日志文件应位于的位置。

我需要让应用程序在 IDE 中运行才能调试并单步执行代码。问题可能是什么? VB6 IDE 是否可以在不同的位置查找某些 DLL?

最佳答案

这可能是由于运行时版本不匹配造成的。请尝试以下操作:

为 IDE 创建一个 .config 文件(例如 IDE 可执行文件的 EXE 名称 + .config)。

将以下内容粘贴到其中:

<configuration>
  <startup>
    <supportedRuntime version="v2.0.50727"/>
    <requiredRuntime version="v2.0.50727" safemode="true"/>
  </startup>
</configuration>

这将确保加载 .NET 2 运行时,无论以何种顺序激活 .NET COM 组件(其中一些组件可能由 IDE 加载,导致进程中运行时不匹配)。

关于.net - VB6 App + .Net 组件作为编译应用程序工作,但不在 VB6 IDE 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2855125/

相关文章:

C# Linq to SQL 无效转换异常

.NET Image.Save方法在Windows 64位上产生不可重现的结果

VB6 For Loop 在一个函数中不被接受,在另一个函数中工作正常

vba - 打开 HTML 文档时 Word Shapes 损坏

.net - .NET 中的互操作问题

.net - 为什么 DialogResult::Yes 需要一个::?

c# - 如何协调 LINQ 中的第一条和最后一条记录

iis-7 - GetObjectContext 在 VB6 COM dll 中不返回任何内容,从经典 ASP 调用

windows - 如何捕获 Windows 消息?

c# - 在标题中的 word 2003 自动化中使用拖放的奇怪行为