我有一个COM对象,我在我的测试C#解决方案中导入。 一切工作正常,并继续这样做。COM互操作对象抛出InvalidCastException在一个项目中,但不在其他
然后,我在我的实际解决方案中导入了相同的COM对象,并且在测试项目中执行了与测试项目完全相同的行。
当我运行真正的项目中,我得到一个InvalidCastException
无法投类型的COM对象CTWebReport.WebReportCOMClass“接口类型“CTWebReport.IWebReportCOM”。此操作失败,因为具有IID“{5DFA18E8-4E71-4ADC-A812-6B166C242561}”的接口的COM组件上的QueryInterface调用由于以下错误而失败:没有此类接口支持(异常来自HRESULT:0x80004002(E_NOINTERFACE)) 。
我搜索了我的整个系统,以便对interop和com库的每个引用进行搜索,其中包括我可以找到的所有bin和obj文件夹。 除了最初的COM库,我把它们都删除了,为了清理掉我的回收站。
没有区别,完全相同的情况。测试项目的作品,真正的项目不。
编辑
看来,COM工程的WinForms应用程序,而不是在我的课librar(由一个asp.net的MVC Web applicatoin消耗)。
我不知道接下来要做什么。建议?
我曾经经历过类似的行为 - 问题在于界面不是自动化兼容的,我在不同情况下打开或关闭了编组。它在编组过程中一切正常,但无法通过编组来检索界面。 – sharptooth 2009-07-10 10:21:13
谨慎阐述?在这两个项目中,编组都是由.net本身完成的(自动生成的interop类)。 – 2009-07-10 10:23:57
我试着CoCreateInstance一个组件与自动化不兼容的接口。首先它只是regsvr32'd,我在32位C++程序中调用了CoCreateInstance() - 它工作正常。当我将组件加入COM +(使其在单独的进程中运行)时,CoCreateInstance在同一个32位程序中现在返回E_NOINTERFACE。 – sharptooth 2009-07-10 11:03:20