0

我正在开发一个用 C# 编写的 Windows 运行时组件,以包装一些没有 Windows 运行时等效项的 COM 接口,遵循这个使用 mbnapi.tlb 提供的互操作接口的MSDN 示例。当我尝试在包装类的构造函数中实例化我的 IMbnInterfaceManager 成员时,如下所示:

m_InterfaceManager = (IMbnInterfaceManager)new MbnInterfaceManager();

由于 E_NOINTERFACE(不支持此类接口),它会引发 System.InvalidCastException。

但是,如果我将包装器构建为类库而不是 WinMD 组件,它可以正常工作,没有其他更改。

我更愿意将其构建为 Windows 运行时组件,以免限制库的有用性。(至少有一个项目是用 Javascript/HTML 编写的。)我做错了什么,还是我试图做的事情不可能?

编辑:原来这是 .NET 4.5 RC 中的一个错误。把这个问题留在这里,以防其他人遇到这个问题,如果我找到一个解决方法,我会发布。据说它将由RTM修复。

4

1 回答 1

0

这已被确认为 .NET 4.5 RC 中的一个错误,据称将由 RTM 修复。当前的解决方法是编辑 .csproj 文件并将 EmbedInteropTypes 设置为 False 以引用 tlb/dll。这可能会导致 App Store 认证测试失败,因此请确保在修复 .NET 错误后将其设置回 True。

于 2012-06-28T15:03:15.213 回答