COM Interop:System.InvalidCastException尝试实例化位于可执行文件中的COM对象时

时间:2017-08-07 06:46:50

标签: c# exception com com-interop

使用COM互操作时,我在C#客户端代码中尝试实例化在C ++中编译并在COM可执行服务器中运行的COM对象时出现以下异常:System.InvalidCastException:无法转换类型为“System .__ ComObject”的对象输入“XXX”。 (其中XXX是我在COM对象的C#代码中使用的类类型)

包含COM对象的可执行文件与客户端代码在同一台机器上运行。我已经验证COM对象已在Windows注册表中正确注册。

实例化在我的项目中没有系统地失败。我需要执行至少3次以查看失败。在我们的CI系统中运行测试期间,我遇到了同样的问题。

1 个答案:

答案 0 :(得分:0)

问题解决了:我的项目使用了2个程序集,它们引用了用于实例化COM对象的Interop dll。这两个程序集中的一个将“EmbedInteropTypes”设置为true,另一个具有相同的属性设置为false。将“EmbedInteropTypes”设置为false以解决问题。

我仍在寻找有关为什么不起作用的好解释。我发现似乎发生了类似问题的其他项目: https://github.com/yck1509/ConfuserEx/issues/302