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版本。
我有什么想法可以明确地告诉编译器使用Color
和Vector2
类的MonoGame版本而不是官方的Microsoft版本吗?
using Color = Microsoft.Xna.Framework
中的任何尝试显然都无效,因为它们在已编译的dll中都标记为相同!
答案 0 :(得分:8)
解决此特定问题的方法是使用extern alias
(MSDN,tutorial)。
这样,您可以为Microsoft XNA DLL设置别名,并为using
类指定适当的Microphone
语句。继续正常使用MonoGame。
可能更好的解决方案可能是使用此技术在名称空间Microphone
中创建名为Microsoft.Xna.Framework.Audio
的自己的包装类。将它放在一个单独的程序集中,这样您就不必使用extern alias
来污染主要源代码。
理想的方法当然是为MonoGame实际实施Microphone
并贡献它;)
(当然,这个答案没有提到你在以这种方式混合MonoGame和XNA方面取得多大成功,功能方面。希望它有效。)