繁体   English   中英

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

[英]COM Interop: System.InvalidCastException when trying to instantiate COM object located in an executable

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM