0

在我的 C#.Net Windows 项目中,我引用了 vb6 COM dll(这个 COM dll 是 SDK 的一部分,已经安装在所有开发和客户端机器上),然后我使用 installshield 为客户端机器创建了安装程序/安装程序。

  • 开发机器:VS2012,Win7 Ultimate 64Bit,.Net 4.0.3。(项目构建任何 cpu / 首选 32 位)。
  • 客户端机器 1 和 2:客户端 1 .net v4.0.3、Win7 Ultimate(32 位)和客户端 2 .net v4.0.3、Win7 Ultimate(64 位)。

vb6 COM dll 在 .Net 2.0 中编译(所以我的项目应该是向后兼容的)

项目在开发机器上运行良好(构建和安装),但是当尝试在客户端机器上运行时 - 我收到以下错误。

问题签名:
  问题事件名称:CLR20r3
  问题签名 01:MyProject tool.exe
  问题签名 02:1.0.3.0
  问题签名 03:5252b033
  问题签名 04:MyProject 工具
  问题签名 05:1.0.3.0
  问题签名 06:5252b033
  问题签名 07: 8
  问题签名 08:b
  问题签名 09:System.InvalidCastException
  操作系统版本:6.1.7601.2.1.0.256.48
  区域设置 ID:2057
  附加信息 1:0a9e
  附加信息 2:0a9e372d3b4ad19135b953a78882e789
  附加信息 3:0a9e
  附加信息 4:0a9e372d3b4ad19135b953a78882e789

在线阅读我们的隐私声明:
  http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0409

如果在线隐私声明不可用,请离线阅读我们的隐私声明:
  C:\Windows\system32\en-US\erofflps.txt

我已经尝试过的: - 最初我认为这个错误是由于 vb6 COM dll 的 CLR 版本不匹配造成的。因此,我尝试在 .net 2.0、3,4、4.5 版本的 .net 中编译 c#.net 项目(不显示 - 相同的错误)。- 然后我在同一台机器上安装了 VS2010(最初我现在在同一台开发机器上使用 vs2012)并再次尝试(不显示 - 相同的错误)。- 然后我用vb6 COM dll创建了一个新的空项目,只有参考,并安装在它工作的客户端机器上。当我在 c#.net 项目中从 vb6 COM dll 创建类的实例时,问题就开始了。我还注意到,当我创建 COM 类的实例时,它说 VS2012 中的接口(替代横幅窗口。当您将鼠标移到类名上时的小弹出窗口)。但它同样适用于开发机器 - 所以不能是接口问题。

  • 我认为这可能是 Visual Basic / C# 问题。然后我在 vb.net 中重新创建了整个项目:我收到了以下错误。我在构建时在我的开发机器上遇到了这个错误(无法在客户端上更进一步)。
由于以下错误,检索具有 CLSID {8F9F6324-E4E2-435A-AB66-7B766CE628AC} 的组件的 COM 类工厂失败:80040154 未注册类(HRESULT 异常:0x80040154 (REGDB_E_CLASSNOTREG))。

然后我查看了所有机器上的注册表/CLSID 注册,并且 COM 已经注册。!

  • 然后我在不同的开发机器上重新创建了上述所有块测试仍然没有显示相同的错误。

我还尝试了 stackoverflow 论坛上建议的许多解决方案。比如取消注册和重新注册 msenv dll。我尝试在客户端和开发机器上卸载并重新安装 .net 框架。

现在已经3周了。任何想法我在这个阶段可以做什么?

4

0 回答 0