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。
需解决两个问题:
- 本次编译失败的原因是什么?
- 如何修改该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。
- XML结构中
- 路径参数错误:命令中
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
相关产品推荐
相关产品推荐

