【问题标题】:Monogame Content Pipeline cannot build XML filesMonogame 内容管道无法构建 XML 文件
【发布时间】:2016-08-22 23:45:51
【问题描述】:

我在使用 Monogame v3.5 内容管道工具为游戏构建一些 XML 文件时遇到问题。我有两个专门用于数据的项目——一个用于通用数据类,一个用于特定数据类——然后我将其引用到我的游戏中。

所有使用“通用”数据类的 XML 文件都能正确构建,但使用游戏特定数据类的 XML 文件却不能。我在我的 .mgcontent 项目中添加了对两个项目 dll 的引用;此外,游戏特定数据项目引用通用数据项目。

使用管道工具构建时出现以下错误:

Importer 'XmlImporter' 出现意外失败! Microsoft.Xna.Framework.Content.Pipeline.InvalidContentException:无法解析类型“SpaceCardGameData.SpaceBackgroundData”

上述失败文件的Xml文件是:

<XnaContent>
    <Asset Type="SpaceCardGameData.SpaceBackgroundData">
        <AsteroidTextureAssets>
            <Item>Objects\Asteroids\TinyAsteroid</Item>
            <Item>Objects\Asteroids\SmallAsteroid</Item>
            <Item>Objects\Asteroids\LargeAsteroid</Item>
            <Item>Objects\Asteroids\HugeAsteroid</Item>
        </AsteroidTextureAssets>
    </Asset>
</XnaContent>

.cs 文件是:

namespace SpaceCardGameData
{
    public class SpaceBackgroundData : BaseData
    {
        public List<string> AsteroidTextureAssets { get; set; }
    }
}

(Base Data 是“通用”项目中的一个空类,我只是用作模板等的基本类型)。

有谁知道为什么一个项目的 XML 文件可以工作,而另一个项目却不行。如果你还想看什么,我会上传。谢谢。

【问题讨论】:

  • 在下面的帖子中查看我的解决方案。查看属性“XmlInclude”:stackoverflow.com/questions/32700342/…
  • 您的答案似乎与 MonoGame 内容管道无关,只是通用 XML 反序列化。我也不认为数据文件应该有任何标记属性,我认为这不是导致错误的原因 - 管道找不到游戏特定数据“SpaceCardGameData.SpaceBackgroundData”类型,而不是 BaseData类。
  • 我不知道 MonoGame,但我怀疑 MonoGame 使用的是标准的 Net 序列化并进行了一些增强。
  • 正如我所说,我相信这不是我的 XML 或 .cs 文件的格式问题,因为一组 XML 数据文件可以正常工作。与不起作用的集合的唯一区别是它们在不同的项目中,这让我怀疑我在某处缺少引用。
  • 'type' 属性可能是问题所在。它与我引用的帖子中的 XmlInclude 属性有关。类型需要与 BaseData 类一致。

标签: c# xml monogame


【解决方案1】:

FIXED 事实证明,数据文件不工作的项目不是真正的 Windows 类库,而是一个 Monogame 项目,我删除了 Game.cs 类以省去添加引用的麻烦。这就是打破它的原因。看起来数据项目必须是真正的类库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多