MonoGame和Microsoft.XNA.Framework名称空间之间的模糊引用

GON*_*ale 6 c# xna monogame windows-phone-8

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版本.

任何想法如何我可以明确地告诉编译器使用ColorVector2类的MonoGame版本而不是官方的微软版本?

任何using Color = Microsoft.Xna.Framework明显的尝试都不会起作用,因为它们在编译的dll中都被标记为相同!

And*_*ell 8

解决这个特定问题的方法是使用extern alias(MSDN,教程).

这样,您可以为Microsoft XNA DLL添加别名,并usingMicrophone该类指定适当的语句.继续正常使用MonoGame.

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

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

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