问题概述在 Unreal Engine 5.3 项目中经过多次 LiveCode 后项目突然无法编译Visual Studio 报错UnrealBuildTool failed with exit code 0xe0434352退出码0xe0434352为 Windows .NET CLR 未处理异常说明 UnrealBuildToolUBT自身进程崩溃而非源码编译错误。环境信息项目内容引擎版本Unreal Engine 5.3平台Windows / Win64编译配置DebugGame.NET SDK6.0.302引擎内置Visual Studio2022 Community 17.11排查过程第一步查看 UBT 日志日志路径C:\Users\Administrator\AppData\Local\UnrealBuildTool\Log.txt日志在以下位置戛然而止无任何异常信息Using EngineIncludeOrderVersion.Latest for target TESPEditor.Target.cs说明 UBT 在 BuildRules 加载阶段崩溃且来不及将异常写入日志文件。第二步手动执行 UBT 获取完整异常通过 PowerShell 直接运行 UBT在控制台捕获完整的 .NET 异常堆栈dotnet C:\Program Files\Epic Games\UE_5.3\Engine\Binaries\DotNET\UnrealBuildTool\UnrealBuildTool.dll TESPEditor Win64 DebugGame -ProjectF:\workspace\02-project\00-TESP-DEV\TESP.uproject -NoMutex第三步分析异常堆栈控制台输出了完整异常Unhandled exception. System.ArgumentException: Path fragment Config/Script/Common/Independent/作战人员无听力自主脚本.json contains invalid directory separators. at EpicGames.Core.FileSystemReference.CombineStrings(...) in FileSystemReference.cs:line 83 at UnrealBuildTool.GitSourceFileWorkingSet.AddPath(String Path) in SourceFileWorkingSet.cs:line 279 at UnrealBuildTool.GitSourceFileWorkingSet.OutputDataReceived(...) in SourceFileWorkingSet.cs:line 243异常明确指向GitSourceFileWorkingSet.AddPath在解析git status输出时遇到了无法处理的路径格式。根本原因分析触发链路修改了中文命名的 JSON 文件 ↓ git status 将其列入变更文件列表 ↓ git 默认开启 core.quotepathtrue 将非 ASCII 字符转义为八进制序列并加引号 输出Config/.../\344\275\234\346\210\230...json ↓ UBT 的 GitSourceFileWorkingSet 逐行解析 git status 输出 ↓ 路径解析器遇到首尾引号误判为非法路径分隔符 ↓ 抛出 System.ArgumentException → UBT 进程崩溃 ↓ exit code 0xe0434352为什么 UBT 要调用 git statusUBT 内置自适应非统一编译Adaptive Non-Unity Build优化机制通过git status获取近期有变更的文件列表仅对变更文件单独编译编译单元拆分其余未变更文件合并为 Unity Build 提升编译速度因此git status的全部输出都会被 UBT 解析包括非代码文件JSON、配置文件等。为什么之前能编译现在不行状态git status 是否包含该文件结果文件未被修改 / 未被 git 追踪否✅ 正常编译文件被修改或首次进入暂存区是❌ UBT 崩溃每次 LiveCode 后保存配置文件最终触发了该文件出现在git status输出中。git core.quotepath 的作用git 的core.quotepath配置项默认值true控制非 ASCII 字符的输出方式# core.quotepathtrue默认 Config/Script/Common/Independent/\344\275\234\346\210\230\344\272\272\345\221\230\346\227\240\345\220\254\345\212\233\350\207\252\344\270\273\350\204\232\346\234\254.json # core.quotepathfalse Config/Script/Common/Independent/作战人员无听力自主脚本.jsonUBT 的路径解析器仅能处理后者的格式。解决方案方案一关闭 git quotepath推荐立即生效在项目目录执行仅对当前仓库生效git config core.quotepath false或全局生效git config --global core.quotepath false配置后重新编译即可恢复正常无需修改任何项目文件。方案二重命名文件治本将涉及的中文文件名改为英文或拼音# 修改前 Config/Script/Common/Independent/作战人员无听力自主脚本.json # 修改后 Config/Script/Common/Independent/soldier_deaf_autonomous_script.json方案三将文件加入 .gitignore规避若该配置文件属于本地个人配置不需要被 git 追踪# .gitignore Config/Script/Common/Independent/*.json文件从 git 追踪中移除后不再出现在git status输出中UBT 也就不会解析到它。各方案对比方案操作成本是否需要修改文件适用场景关闭 core.quotepath极低一条命令否快速恢复编译团队统一配置重命名文件低是有重构时间彻底杜绝同类问题加入 .gitignore低否该文件本就不需要版本控制延伸建议UE5 项目中中文路径在多个场景下均存在兼容性风险资源 CookUnreal 的资源烘焙系统在处理中文路径时可能产生异常多人协作不同操作系统、git 配置下的路径编码行为不一致CI/CD 流水线自动化构建环境通常为纯 ASCII 环境中文路径易导致脚本失败第三方工具链部分插件或外部工具对非 ASCII 路径支持不完善建议在项目初期制定规范所有纳入版本控制的文件和目录均使用英文命名。参考UE5 源码Engine/Source/Programs/UnrealBuildTool/System/SourceFileWorkingSet.csgit 文档core.quotepathWindows CLR 异常码0xe0434352 .NET CLR Unhandled Exception