【问题标题】:VB6 Loading .net 4 C# COM dll from Windows 7 to Windows XPVB6 将 .net 4 C# COM dll 从 Windows 7 加载到 Windows XP
【发布时间】:2016-04-08 04:54:58
【问题描述】:

我在 .Net Framework 4.5 环境中创建了一个 C# ComVisible 类库 dll - 但 dll 目标框架设置为 Framework 3.5 我已经创建了 COM dll 并将其添加到使用 Visual Studio 2012 的 GAC 我将此 dll 作为参考添加到我的旧 VB6 项目中(来自 Project->Add Reference)。 一切正常。所有这些都在 Windows 7 中完成。

现在,我在具有 .net Framework 4.0 的 Windows XP 上使用相同的 dll。 我将 dll 添加到 Windows XP 上的 GAC 中。 但我无法在 VB 中找到 dll 以将其添加为参考。 你能告诉我我可能会错过什么吗?在我的 XP 机器中,dll 位于:C:\WINDOWS\assembly\GAC_MSIL 位置

知道我在这里缺少什么吗?

编辑:我还使用 regasm 实用程序注册了程序集。 我应该对注册表进行任何更改以在我的 VB6 项目的“可用参考”列表中查看我的 COM dll??

【问题讨论】:

  • 您从未提到使用 Regasm.exe 注册程序集。这可以在您的开发机器上使用“Register for COM interop”复选框自动完成,只需构建项目就足够了。不在那个 XP 机器上。请务必使用正确的版本,您需要旧版本,因为您的目标是一个古老的 .NET 框架版本。请记住,VB6 不在乎。

标签: c# .net com vb6


【解决方案1】:

为 COM 注册程序集时,您需要调用

regasm myassembly.dll /codebase

/codebase 添加您的 VB6 应用程序将用于查找 DLL 的相关注册表项。

【讨论】:

  • 不,这里重要的是 /tlb 选项。
  • 这取决于用户是尝试在VB6中使用第二台计算机上的DLL进行开发还是只是尝试运行已编译的应用程序。部署时不需要 tlb 文件,因此如果用户只是尝试在第二台计算机上运行应用程序,那么 /codebase 就足够了。
  • 再次,不。当程序集安装在 OP 正在执行的 GAC 中时,代码库选项不适用。见Regasm.exe (Assembly Registration Tool)。正如@Hans 所说,相关的是 /tlb 选项。
  • 就 /codebase 选项而言,我是正确的。我没有将我的 COM 公开程序集放在 GAC 中,所以没有意识到这不是必需的。我仍然不明白为什么需要创建 TLB。在过去的 3 年里,我一直在用我的应用程序分发一个 COM 暴露的程序集,我只是在安装目录中使用 /codebase 注册它。我不分发或重新创建 tlb。从一些搜索来看,如果您使用线程,听起来有些情况需要它,但我相信在大多数情况下它是不需要的。
  • 谢谢大家的回复。我正在考虑将其从 GAC 中移出并改为私有 COM 程序集并使用 regasm。
猜你喜欢
  • 1970-01-01
  • 2018-09-13
  • 1970-01-01
  • 2013-03-09
  • 1970-01-01
  • 2011-02-13
  • 1970-01-01
  • 2011-03-27
  • 1970-01-01
相关资源
最近更新 更多