0

mbnapi.tlbによって提供される相互運用インターフェイスを使用するこのMSDNの例に従って、Windowsランタイムに相当するものがないいくつかのCOMインターフェイスをラップするためにC#で記述されたWindowsランタイムコンポーネントに取り組んでいます。ラッパークラスのコンストラクターでIMbnInterfaceManagerメンバーをインスタンス化しようとすると、次のようになります。

m_InterfaceManager = (IMbnInterfaceManager)new MbnInterfaceManager();

E_NOINTERFACEが原因でSystem.InvalidCastExceptionがスローされます(このようなインターフェイスはサポートされていません)。

ただし、ラッパーをWinMDコンポーネントではなくクラスライブラリとしてビルドすると、他の変更なしで正常に動作します。

ライブラリの有用性を制限しないように、これをWindowsランタイムコンポーネントとして構築したいと思います。(これが意図されているプロジェクトの少なくとも1つはJavascript / HTMLで書かれています。)私は何か間違ったことをしていますか、それとも私がしようとしていることは不可能ですか?

編集:それは.NET4.5RCのバグであることが判明しました。他の誰かがこの問題に遭遇した場合に備えて、この質問をここに残しておきます。問題が見つかった場合は、回避策を投稿します。おそらくそれはRTMによって修正されるでしょう。

4

1 に答える 1

0

これは.NET4.5RCのバグとして確認されており、RTMによって修正されるとされています。現在の回避策は、.csprojファイルを編集し、tlb/dllへの参照用にEmbedInteropTypesをFalseに設定することです。これにより、App Store認定テストが失敗する可能性があるため、.NETのバグが修正されたら、必ずTrueに戻してください。

于 2012-06-28T15:03:15.213 に答える