我刚刚下载了Monogame的最新版本(3.5),我突然得到了XNA的模糊引用。我不确定我之前有什么版本,但只需说它已经有几年了。
我尝试在Visual Studio中添加和删除程序集引用,但这只会产生不同的错误。
这是确切的信息(其中之一):
Error 12 The type 'Microsoft.Xna.Framework.Graphics.Texture2D' exists in both 'C:\Program Files (x86)\MonoGame\v3.0\Assemblies\WindowsPhone\x86\MonoGame.Framework.dll' and 'C:\Program Files (x86)\Microsoft XNA\XNA Game Studio\v4.0\References\Windows\x86\Microsoft.Xna.Framework.Graphics.dll' c:\nightmare games\games\in production\boxland incorporated\boxland (monogame)\boxland\character_control.cs 55
我得到以下类型的这些:
更新
我试图仅使用Monogame从项目中删除XNA。删除程序集引用和“using”语句会导致以下类型的大量“类型或命名空间未找到”错误:
我已经有MonoGame.Framework的程序集引用。仅为MonoGame添加新的using语句会导致错误:
Error 4 The type or namespace name 'MonoGame' could not be found (are you missing a using directive or an assembly reference?) C:\Nightmare Games\Games\In Production\Boxland Incorporated\Boxland (monogame)\Boxland\Particle_Effects.cs 5
更新
项目 - >属性 - >目标框架 将其从“.NET Framework 4”更改为“.NET Framework 4.5”似乎可以解决Microsoft.XNA无法识别的问题,但这只会产生新的错误。
Error 2 The type or namespace name 'Graphics' does not exist in the namespace 'Microsoft.Xna.Framework' (are you missing an assembly reference?) C:\Nightmare Games\Games\In Production\Boxland Incorporated\Boxland (monogame)\Boxland\Draw.cs 4
我现在正在为Microsoft.Xna.Framework保护伞下的所有内容提供此功能,包括图形,输入,音频,内容,GamerServices等。
答案 0 :(得分:3)
现在一切正常(差不多)。不幸的是,这不是一个快速解决方案。这是我为使其工作所做的一切清单:
项目 - >属性 - >目标框架:
必须将其设置为" .NET Framework 4.5"。我相信我以前是4.0。
使用语句
使用Microsoft.Xna.Framework"保留所有"声明。但是," Microsoft.Xna.Framework.GamerServices"必须去。显然不再支持这个(并且我不确定我的用途是什么)。试图添加" Microsoft.Xna.Framework"回来也是一个坏主意。
我对Monogame的程序集引用错误。
这个很棘手,因为参考经理显示了其中的14个,其中没有一个只是" MonoGame.Framework"带有版本号。显然他们并非都是一样的。将鼠标悬停在名称上会显示不同的文件路径。我仍然不知道Windows,Windows8和WindowsUniversal之间的区别,但我实际需要的那个甚至没有被列在搜索结果中。我不得不浏览到实际的文件,对于常规的Windows桌面来说: C:\ Program Files(x86)\ MonoGame \ v3.0 \ Assemblies \ Windows \ MonoGame.Framework.dll
FileMode.Open不再有效。
这是System.IO的一部分,现在似乎与Monogame发生冲突。解决方案是使用" Content.Load",这是XNA用来做的。
我使用FileMode.Open来加载Texture2D,因为旧的Monogame并不支持编译内容。具有讽刺意味的是,发现现在支持它是我升级的主要原因,但我并不认为我会一次性将近400个精灵转换为新格式。它们都需要加载到新的管道工具中并编译,添加到VS项目中,然后实际的加载代码必须改变。
切换回Content.Load使我在过渡期间写的一些类无效,因为Monogame似乎并不喜欢尝试使用主游戏类之外的GraphicsDevice。这些也必须进行大量重构。
答案 1 :(得分:0)
您的项目和所有引用的程序集应仅引用MonoGame。 MonoGame是XNA的完全替代品,几乎可以实现所有XNA 4.0类型。这两者可能不会在一个应用程序中共存。