System.Runtime.InteropServices.COMException一次又一次

System.Runtime.InteropServices.COMException once and again

我不知道为什么/什么时候会发生这种情况,但这条错误消息每年都让我感到困扰:

抛出异常:'System.Runtime.InteropServices.COMException' in mscorlib.dll

附加信息:由于以下原因,无法访问具有 CLSID {C70F08F3-3F2A-477D-9F7A-B5463E973BDC} 的组件的 COM class 工厂:80040154 Class未注册(HRESULT 异常:0x80040154 (REGDB_E_CLASSNOTREG))。

我不记得每次出现这种情况我是如何解决的。 我想我重新编译了 OCX 组件,然后我又添加了它。

但是,这会很奇怪,因为我可以在 VB6 中使用 OCX 组件。 那为什么不能在 .NET 中访问它呢?

任何人都可以解释这里可能发生的事情吗?

谢谢。

如果 OP 中没有任何支持代码,很难猜测,但症状与 OCX 出于某种原因(例如,由于接口更改)更改了 CLSID 是一致的。

在那种情况下:

  • 重建OCX一般在最后会重新注册,所以正确的class被注册了;

  • 重新添加对 OCX 的引用会将引用的 CLSID 更新为正确的。

至于为什么它在 VB6 中工作,很可能参考已经以某种方式更新了。鉴于缺乏细节,这又是如何发生的,很难猜测。