首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >升级Monogame:该类型同时存在于Monogame和XNA中

升级Monogame:该类型同时存在于Monogame和XNA中
EN

Stack Overflow用户
提问于 2016-06-16 22:55:55
回答 2查看 2K关注 0票数 2

我刚刚下载了最新版本的Monogame (3.5),我突然得到了XNA的模糊引用。我不知道我以前有过什么版本,但只需说几年就够了。

我尝试在Visual中添加和删除程序集引用,但这只会产生不同的错误。

以下是确切的信息(其中之一):

代码语言:javascript
复制
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

我正在为下列类型获得这些信息:

  • Texture2D
  • GraphicsDevice
  • 颜色
  • Vector4
  • MathHelper

更新:

我尝试从项目中删除XNA,只使用Monogame。删除程序集引用和“使用”语句会导致以下类型的大量“类型或命名空间未找到”错误:

  • Texture2D
  • 游戏
  • GameTime
  • SpriteBatch
  • SoundEffect
  • 和其他许多人

我已经有了对MonoGame.Framework的程序集引用。为MonoGame添加新的the语句只会导致错误:

代码语言:javascript
复制
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 Framework4“改为".NET Framework4.5”似乎解决了Microsoft.XNA未被识别的问题,但这只会产生新的错误。

代码语言:javascript
复制
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等等。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-30 23:26:17

现在(几乎)一切正常。不幸的是,这不是一个快速的解决办法。以下是我为实现这一目标所做的一切:

项目->属性->目标框架:

这必须设置为".NET Framework4.5“。我相信我以前是4.0岁的。

使用语句

保留所有“使用Microsoft.Xna.Framework”语句。然而,"Microsoft.Xna.Framework.GamerServices“必须离开。这个显然已经不再受支持了(我不知道我用它做了什么)。尝试重新加入"Microsoft.Xna.Framework“也是个坏主意。

I对Monogame.的程序集引用错误

这是一个棘手的问题,因为参考管理器显示了其中的14个,其中没有一个只显示一个版本号的"MonoGame.Framework“。显然它们并不都是一样的。悬停在名称上会显示不同的文件路径。我仍然不知道Windows、Windows8和WindowsUniversal之间有什么区别,但我真正需要的是在搜索结果中甚至没有列出。我必须浏览到实际文件,对于常规windows桌面,该文件位于: C:\Program (x86)\MonoGame\v3.0\Assemblies\Windows\MonoGame.Framework.dll下面。

FileMode.Open不再工作了.

这是System.IO的一部分,它现在似乎正在引起与Monogame的冲突。解决方案是使用"Content.Load",这就是XNA过去的做法。

我使用FileMode.Open来加载Taskture2D,因为以前的Monogame不支持编译内容。具有讽刺意味的是,发现现在支持这一点是我升级的主要原因,但我不认为我会一次把将近400个精灵转换成新的格式。它们都需要加载到新的管道工具和编译,添加到VS项目,然后实际加载代码必须改变。

切换回Content.Load使我在过渡期间编写的一些类失效,因为Monogame似乎不喜欢尝试在主游戏类之外使用GraphicsDevice。这些因素也必须进行大量的重构。

票数 5
EN

Stack Overflow用户

发布于 2016-06-17 11:37:17

您的项目和所有引用的程序集都应该只引用MonoGame。MonoGame是XNA的完全替代,几乎实现了所有XNA4.0类型。这两者不能在一个应用程序中共存。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37870668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档