在VS NMake构建命令行使用输出重定向时为何出现MSB4025错误?
错误原因及解决方法
核心原因
vcxproj是XML格式的项目文件,XML语法对&这类字符有特殊规则:&是XML实体引用的起始标记(比如&代表&本身)。你在构建命令里写的2>&1中的&未做转义处理,XML解析器会把它当成某个实体名称的开头,但后面的1并不是合法的XML实体名,因此触发了"解析EntityName错误",报错的行位正好对应该&符号的位置。
解决方法
把命令中的&替换为XML转义字符&,若>也出现解析问题,可一并转义为>,修改后的命令示例如下:
echo "unwanted output" >nul 2>&1
也可仅转义&(部分场景下>可直接使用):
echo "unwanted output" >nul 2>&1
修改后保存vcxproj文件,再调用msbuild即可正常解析执行。
内容的提问来源于stack exchange,提问作者MattTT
相关产品推荐
相关产品推荐

