MonoGame& amp; Microsoft.XNA.Framework命名空间

时间:2013-03-05 13:28:23

标签: c# xna windows-phone-8 monogame

MonoGame(一个基本上将XNA引入Windows Phone 8的框架)具有前缀为Microsoft.Xna.Framework的所有命名空间我相信可以最大限度地减少将XNA应用程序移植到MonoGame时所需的代码更改量。

我的问题是,我希望访问Microphone类,因为尚未在MonoGame中创建,我必须在官方的Microsoft XNA类中使用它,这需要取出明确的强制删除我的MonoGame模板设置的.csproj中的标准Microsoft.XNA.Framework.dll引用,以避免冲突,这很有效,现在Microphone可以访问,但是这样做我在几个键之间产生了模糊性Microsoft标准问题和MonoGame中都存在的类。

我收到的错误是:

  

含糊不清的参考文献:
  Microsoft.Xna.Framework.Color
  Microsoft.Xna.Framework.Color

这显然是因为除了标准的Microsoft发布的XNA库之外,我还引用了MonoGame.Framework.dll来命名命名空间,从而产生了这种模糊性。但是,在所有情况下,我都希望访问MonoGame版本。

我有什么想法可以明确地告诉编译器使用ColorVector2类的MonoGame版本而不是官方的Microsoft版本吗?

using Color = Microsoft.Xna.Framework中的任何尝试显然都无效,因为它们在已编译的dll中都标记为相同!

1 个答案:

答案 0 :(得分:8)

解决此特定问题的方法是使用extern aliasMSDNtutorial)。

这样,您可以为Microsoft XNA DLL设置别名,并为using类指定适当的Microphone语句。继续正常使用MonoGame。

可能更好的解决方案可能是使用此技术在名称空间Microphone中创建名为Microsoft.Xna.Framework.Audio的自己的包装类。将它放在一个单独的程序集中,这样您就不必使用extern alias来污染主要源代码。

理想的方法当然是为MonoGame实际实施Microphone并贡献它;)

(当然,这个答案没有提到你在以这种方式混合MonoGame和XNA方面取得多大成功,功能方面。希望它有效。)