UE5.7 C++项目,VS2022启动出现错误:

1>D:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.MakeFile.Targets(44,5): error MSB3073: 命令“"D:\Program Files\Epic Games\UE_5.7\Engine\Build\BatchFiles\Build.bat" BuildingVisualEditor Win64 Development -Project="D:\project\Unreal\BuildingVisual\BuildingVisual.uproject" -WaitMutex -FromMsBuild -architecture=x64”已退出,代码为 -532462766。

xxxxx替换为项目名称,执行命令:

dotnet "D:\Program Files\Epic Games\UE_5.7\Engine\Binaries\DotNET\UnrealBuildTool\UnrealBuildTool.dll" BuildingVisualEditor Win64 Development -Project="D:\project\Unreal\xxxxx\xxxxx.uproject" -WaitMutex -FromMsBuild -architecture=x64

我的错误是:

Unhandled exception. System.ArgumentException: Path fragment '"Content/Visual/Widget/Icon/\345\214\273\351\231\242.png"' contains invalid directory separators.
   at EpicGames.Core.FileSystemReference.CombineStrings(DirectoryReference baseDirectory, String[] fragments)
   at UnrealBuildTool.GitSourceFileWorkingSet.AddPath(String Path)
   at UnrealBuildTool.GitSourceFileWorkingSet.OutputDataReceived(Object Sender, DataReceivedEventArgs Args)
   at System.Diagnostics.AsyncStreamReader.FlushMessageQueue(Boolean rethrowInNewThread)
--- End of stack trace from previous location ---
   at System.Threading.ThreadPoolWorkQueue.Dispatch()
   at System.Threading.PortableThreadPool.WorkerThread.WorkerThreadStart()
Creating makefile for BuildingVisualEditor (no existing makefile)

项目里有一个中文命名的资源文件 医院.png(位于 Content/Visual/Widget/Icon/),Git 在输出文件状态时,把包含中文的路径用双引号包裹了起来,变成了 “Content/Visual/Widget/Icon/医院.png”。UnrealBuildTool 的自适应构建功能使用 git status 来检测修改过的文件,但它没能正确处理 Git 输出的引号,导致把带引号的字符串传给路径组合函数,引发崩溃。

解决方案

方案一:让 Git 不要对中文路径加引号(最简单)

在项目根目录(D:\project\Unreal\xxxxx)打开命令行,执行:

git config core.quotepath false

这会告诉 Git 直接输出 UTF-8 原字符,不再用引号和转义码包裹中文文件名。然后重新编译即可。

方案二:重命名中文文件

把 Content/Visual/Widget/Icon/医院.png 改成纯英文名(例如 Hospital.png),并在所有引用它的地方(Widget 蓝图、材质等)更新路径。重命名后 Git 也会识别为无引号的路径。

更多推荐