【问题标题】:Unable to cast COM object of type 'System.__ComObject' to interface type for IRTDUpdateEvent无法将类型为“System.__ComObject”的 COM 对象转换为 IRTDUpdateEvent 的接口类型
【发布时间】:2010-12-02 07:05:52
【问题描述】:

我花了很多时间试图弄清楚为什么在尝试运行通过 RegAsm 安装时开发的 RTD 服务器(Excel RTD 服务器)时出现以下错误。如果我在我的开发机器上设置了 Register for COM interop 标志,它可以正常工作,但在使用 RegAsm 安装它时不会。

System.InvalidCastException:无法将“System.__ComObject”类型的 COM 对象转换为接口类型“IRTDUpdateEvent”。此操作失败,因为 IID 为“{A43788C1-D91B-11D3-8F39-00C04F3651B8}”的接口的 COM 组件上的 QueryInterface 调用因以下错误而失败:不支持此类接口(来自 HRESULT 的异常:0x80004002 (E_NOINTERFACE)) .

有什么想法吗?

【问题讨论】:

    标签: c#


    【解决方案1】:

    你的接口“IRTDUpdateEvent”有这个Guid吗?

    【讨论】:

    • 感谢您的回复。是的,确实如此。
    • 能否请您发布所有定义? Assembly.cs、类定义(属性)和接口定义?
    【解决方案2】:

    谢谢亚瑟,

    我终于成功破解了它。问题是在创建安装包时,我在自定义安装中引用了 Assembley。运行 RTD 时显然不喜欢这样。 RegAsm 在我的自定义安装中。我通过选中 Register for COM interop 标志解决了这个问题,然后通过右键单击并选择 Add --> Assembley 在我的设置项目中添加 Assembley。

    谢谢

    【讨论】:

      猜你喜欢
      • 2018-06-20
      • 2018-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-20
      • 2016-02-02
      相关资源
      最近更新 更多