You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Monogame XML资源编译失败原因及mgcb命令参数调整咨询

Monogame XML关卡资源编译错误排查与命令修改

问题描述

在Monogame应用中添加包含关卡数据的XML资源时,运行出现编译错误,错误提示:

命令"dotnet mgcb /quiet /@:"C:\projectpath\Content.mgcb" /platform:Windows /outputDir:"C:/projectpathpath/Content" /intermediateDir:"C:/projectpath/Content" /workingDir:"C:projectpath/Content/"" 退出代码为1。

需解决两个问题:

  1. 本次编译失败的原因是什么?
  2. 如何修改该mgcb命令,使用/quiet以外的参数?

问题解答

1. 编译失败的原因

结合提供的文件,主要问题集中在以下几点:

  • XML语法错误:levels.xml中<levels>标签未正确闭合,末尾的<levels>应改为</levels>,未闭合的XML会导致MGCB解析失败。
  • XML与C#类映射不匹配:
    • XML结构中<Asset Type="Lib.Models.Levels">直接包含<levels>节点,但C#类Levels标记了[XmlRoot("levels")],需确保层级对应;同时要确认MGCB能正确识别Lib.Models.Levels类型,需保证项目引用了该类所在程序集,且Content项目中XML资源的处理器已设置为XmlImporter和XmlWriter。
  • 路径参数错误:命令中workingDir路径缺失斜杠(C:projectpath/Content/应为C:/projectpath/Content/),会导致工具无法定位资源文件。

2. 修改mgcb命令参数

/quiet参数会屏蔽所有输出,无法获取具体错误细节,建议替换为以下参数:

  • /verbose:输出详细编译日志,便于定位具体错误
  • /diagnostic:输出更详尽的诊断信息,适合复杂问题排查

移除/quiet并修正路径后的命令示例:

dotnet mgcb /verbose /@:"C:\projectpath\Content.mgcb" /platform:Windows /outputDir:"C:/projectpath/Content" /intermediateDir:"C:/projectpath/Content" /workingDir:"C:/projectpath/Content/"

此外,也可直接用MGCB Editor打开Content.mgcb文件,通过可视化界面配置资源,避免手动编写命令出错。


修正后的相关文件示例

修正后的levels.xml

<?xml version="1.0" encoding="UTF-8"?>
<XnaContent>
    <Asset Type="Lib.Models.Levels">
        <levels>
            <level num="1" rule="multiban">
                <board>
<![CDATA[
31110
11111
11111
11121
11111
]]>
                </board>
                <cubes>
<![CDATA[
00000
00020
00010
03000
00000       
]]>
                </cubes>
            </level>
        </levels> <!-- 修正:闭合levels标签 -->
    </Asset>
</XnaContent>

Levels.cs(映射逻辑可保持不变)

using System.Collections.Generic;
using System.Xml.Serialization;

namespace Lib.Models
{
    public class Level
    {
        [XmlAttribute("num")]
        public int Number { get; set; }

        [XmlAttribute("rule")]
        public string Rule { get; set; }

        [XmlElement("board")]
        public string Board { get; set; }

        [XmlElement("cubes")]
        public string Cubes { get; set; }
    }

    [XmlRoot("levels")]
    public class Levels
    {
        [XmlElement("level")]
        public List<Level> Level { get; set; }
    }
}

资源加载代码

var levels = Content.Load<Levels>("levels");

内容的提问来源于stack exchange,提问作者Anders Lindén

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 21:30:17