gpt4 book ai didi

c# - 升级单游戏 : The type exists in both Monogame and XNA

转载 作者:行者123 更新时间:2023-11-30 20:35:27 24 4
gpt4 key购买 nike

我刚刚下载了最新版本的 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

我收到以下类型的这些:

  • 纹理二维
  • 图形设备
  • 颜色
  • 矢量4
  • 数学助手

更新:

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

  • 纹理二维
  • 游戏
  • 游戏时间
  • SpriteBatch
  • 音效
  • 还有许多其他

我已经有了对 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 等。

最佳答案

现在(几乎)一切正常。不幸的是,这不是一个快速解决方案。以下是我为实现此目的所做的一切的列表:

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

必须将其设置为“.NET Framework 4.5”。我相信我以前是 4.0。

使用语句

保留所有“using 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 个 Sprite 转换为新格式。它们都需要加载到新的管道工具中并编译,添加到VS项目中,然后实际加载代码必须更改。

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

关于c# - 升级单游戏 : The type exists in both Monogame and XNA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37870668/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com