MonoGame(一个基本上将 XNA 引入 Windows Phone 8 的框架)的所有命名空间都带有前缀Microsoft.Xna.Framework
我相信将 XNA 应用程序移植到 MonoGame 时所需的代码更改量最小化。
我的问题是,我希望访问Microphone
类,因为尚未在 MonoGame 中创建,所以我必须在官方 Microsoft XNA 类中使用它,这需要显式强制删除标准Microsoft.XNA.Framework.dll
我的 MonoGame 模板已设置 .csproj 中的引用以避免冲突,现在效果很好Microphone
是可访问的,但这样做我在 Microsoft 标准版和 MonoGame 中都存在的几个关键类之间造成了歧义。
我收到的错误是:
不明确的参考:
Microsoft.Xna.Framework.Color
Microsoft.Xna.Framework.Color
显然发生了这种情况,因为除了 Microsoft 发布的标准 XNA 库之外,我还引用了MonoGame.Framework.dll
它霸占了命名空间,造成了这种歧义。但是,在所有情况下,我都希望访问 MonoGame 版本。
我有什么想法可以明确告诉编译器使用 MonoGame 版本Color
and Vector2
类而不是微软官方的类?
任何尝试using Color = Microsoft.Xna.Framework
显然是行不通的,因为它们在编译的 dll 中标记相同!
解决这个特定问题的方法是使用extern alias
(MSDN http://msdn.microsoft.com/en-us/library/ms173212.aspx, tutorial http://blogs.msdn.com/b/ansonh/archive/2006/09/28/extern-alias-walkthrough.aspx).
这样您就可以为 Microsoft XNA DLL 指定别名并指定适当的using
声明只是为了Microphone
班级。继续正常使用 MonoGame。
可能更好的解决方案是让您自己的包装类称为Microphone
在命名空间中Microsoft.Xna.Framework.Audio
使用这种技术。将其放在单独的程序集中,这样您就不必使用extern alias
stuff.
当然,最理想的方式是实际实施Microphone
为 MonoGame 贡献它;)
(当然,这个答案并没有说明您以这种方式混合 MonoGame 和 XNA 的功能有多成功。希望它能起作用。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)