我正在使用C#编写的Windows运行时组件来包装一些不具备Windows运行时等效项的COM接口,而this MSDN example使用mbnapi提供的互操作接口。 TLB。当我尝试在包装类的构造函数中实例化我的IMbnInterfaceManager成员时,如下所示:
m_InterfaceManager = (IMbnInterfaceManager)new MbnInterfaceManager();
由于E_NOINTERFACE而抛出System.InvalidCastException(不支持此类接口)。
但是,如果我将我的包装器构建为类库而不是WinMD组件,它可以正常工作,没有其他更改。
我更倾向于将其构建为Windows运行时组件,以免限制库的有用性。 (至少有一个项目是用Javascript / HTML编写的。)我做错了什么,或者是我试图做不到的事情?
编辑:原来它是.NET 4.5 RC中的一个错误。留下这个问题以防其他任何人遇到这个问题,如果找到一个,我会发布一个解决方法。据说它将由RTM修复。
答案 0 :(得分:0)
这已被确认为.NET 4.5 RC中的一个错误,据称将由RTM修复。当前的解决方法是编辑.csproj文件并将EmbedInteropTypes设置为False以引用tlb / dll。这可能导致App Store认证测试失败,因此确保在修复.NET错误后将其重新设置为True。