6

MonoGame(基本的にXNAをWindows Phone 8に導入するフレームワーク)にはMicrosoft.Xna.Framework、XNAアプリをMonoGameに移植するときに必要なコード変更の量を最小限に抑えるために、すべての名前空間のプレフィックスが付いています。

私の問題は、Microphoneクラスにアクセスしたいということです。MonoGameでまだ作成されていないため、公式のMicrosoft XNAクラス内から使用する必要があります。これには、Microsoft.XNA.Framework.dll内の標準参照を明示的に強制的に削除する必要があります。 .csprojは、MonoGameテンプレートが競合を回避するように設定されているため、うまく機能Microphoneし、アクセスできるようになりましたが、そうすることで、Microsoft標準版とMonoGameの両方に存在するいくつかの主要なクラスの間にあいまいさが生じました。

私が受け取っているエラーは次のとおりです。

あいまいな参照:
Microsoft.Xna.Framework.Color
Microsoft.Xna.Framework.Color

これは明らかに、Microsoftが発行した標準のXNAライブラリに加えてMonoGame.Framework.dll、名前空間を指揮する参照があり、このあいまいさを生み出しているために発生しました。ただし、すべての場合において、MonoGameバージョンにアクセスしたいと思います。

公式のMicrosoftバージョンではなくMonoGameバージョンのColorandVector2クラスを使用するようにコンパイラーに明示的に指示する方法はありますか?

コンパイルされたdllで両方とも同じラベルが付けられているため、using Color = Microsoft.Xna.Framework明らかに機能しません。

4

1 に答える 1

8

この特定の問題を解決する方法は、extern aliasMSDNチュートリアル)を使用することです。

このようにして、Microsoft XNA DLLのエイリアスをusing作成し、クラスにのみ適切なステートメントを指定できますMicrophone。通常どおりMonoGameを引き続き使用します。

おそらくより良い解決策は、この手法を使用Microphoneして名前空間で呼び出される独自のラッパークラスを作成することです。Microsoft.Xna.Framework.Audioメインのソースコードを汚染する必要がないように、別のアセンブリに入れてくださいextern alias

もちろん、理想的な方法は、MicrophoneMonoGameを実際に実装し、貢献することです;)

(もちろん、この回答は、MonoGameとXNAをこのように機能的に混合することにどれほど成功するかについては何も述べていません。うまくいけばうまくいきます。)

于 2013-03-05T13:38:04.107 に答える