After checking out an InstalledBuild, the first launch of RunUAT.bat
with ScriptDir parameter fails during AutomationTool compilation. All subsequent launches complete successfully without issues.
The attached log was taken from our project, but the error behavior is identical.
While the issue might seem negligible at first, it’s quite frustrating to encounter these “random” build failures on our agents after updating their InstalledBuilds.
It’s possible that there’s a missing preparation step required to make the InstalledBuild fully ready for use—but if so, it’s unclear which command (if any) should be run to ensure that.
I couldn’t locate the linked log file, so I’m pasting it here instead:
`Running AutomationTool…
Using bundled DotNet SDK version: 8.0.300
Starting AutomationTool…
Parsing command line: BuildGraph -ScriptDir=E:/work/MyProject/Build/MyProject.Automation
Initializing script modules…
Building 1 projects (see Log ‘Engine/Programs/AutomationTool/Saved/Logs/Log.txt’ for more details)
Restore…
Build…
E:\ue-builds\Windows\Engine\Source\Programs\Shared\EpicGames.Horde\Logs\ServerLogger.cs(13,7): error CS0246: The type or namespace name ‘Horde’ could not be found (are you missing a using directive or an assembly reference?) (E:\ue-builds\Windows\Engine\Source\Programs\Shared\EpicGames.Horde\EpicGames.Horde.csproj)
E:\ue-builds\Windows\Engine\Source\Programs\Shared\EpicGames.Horde\Logs\ServerLogger.cs(234,104): error CS0246: The type or namespace name ‘RpcCreateLogEventRequest’ could not be found (are you missing a using directive or an assembly reference?) (E:\ue-builds\Windows\Engine\Source\Programs\Shared\EpicGames.Horde\EpicGames.Horde.csproj)
E:\ue-builds\Windows\Engine\Source\Programs\Shared\EpicGames.Horde\Logs\ServerLogger.cs(332,43): error CS0246: The type or namespace name ‘RpcCreateLogEventRequest’ could not be found (are you missing a using directive or an assembly reference?) (E:\ue-builds\Windows\Engine\Source\Programs\Shared\EpicGames.Horde\EpicGames.Horde.csproj)
Failed to build: E:\ue-builds\Windows\Engine\Source\Programs\Shared\EpicGames.Horde\EpicGames.Horde.csproj
Failed to build: E:\ue-builds\Windows\Engine\Source\Programs\UnrealBuildTool\UnrealBuildTool.csproj
Failed to build: E:\ue-builds\Windows\Engine\Source\Programs\AutomationTool\AutomationUtils\AutomationUtils.Automation.csproj
Failed to build: E:\ue-builds\Windows\Engine\Source\Programs\AutomationTool\Localization\Localization.Automation.csproj
Failed to build: E:\ue-builds\Windows\Engine\Source\Programs\AutomationTool\OneSkyLocalization\OneSkyLocalization.Automation.csproj
Failed to build: E:\ue-builds\Windows\Engine\Source\Programs\AutomationTool\XLocLocalization\XLocLocalization.Automation.csproj
Failed to build: E:\ue-builds\Windows\Engine\Source\Programs\AutomationTool\Scripts\AutomationScripts.Automation.csproj
Failed to build: E:\ue-builds\Windows\Engine\Source\Programs\AutomationTool\Android\Android.Automation.csproj
Failed to build: E:\ue-builds\Windows\Engine\Source\Programs\AutomationTool\Gauntlet\Gauntlet.Automation.csproj
Failed to build: E:\work\MyProject\Build\MyProject.Automation\MyProject.Automation.csproj
Build projects time: 16.51 s
AutomationTool executed for 0h 0m 20s
AutomationTool exiting with ExitCode=1 (Error_Unknown)
BUILD FAILED`
Hey there,
When you refer to “checking out an Installed Build”, what exactly do you mean here? And can you please provide the command line invocation that you’re issuing? I can see you’re invoking RunUAT.bat with -ScriptDir, but I’ll need some additional details as the automation script recompilation can be a little tricky.
The aforementioned code that is missing is all Protobuf related, so it’s likely that one of two things are true:
- Installed build doesn’t include the intermediates of the protobuf generated code (and hence why I’m asking you for more details on ‘checked out installed build’)
- There is an issue in how RunUAT is attempting to recompile the binaries of a launcher build.
I have been able to use a launcher build and invoke a separate project buildgraph target from it’s ScriptDir - so I’m assuming that this installed build variant isn’t what you’re referring to.
Edit:
- I had to move around some of my local files a bit to get things appropriately breaking

- I’ve got a repro locally. Stay tuned.
Kind regards,
Julian
Hey there,
After further digging on my end, it looks like this issue has been fixed for 5.6. The change is a bit difficult to backport, so my recommendation would be to lean into 5.6 for a proper fix to this. If you’re unable to do this, you could introduce a mandatory rebuild for this edge case of the EpicGames.Horde project.
The root cause here is:
- In the old code, we have Restore and Build broken apart into separate invocations (5.5)
- Protobuf generated source will be created in the restore phase
- The ProjectInstance.ImportPaths do not contain the necessary *.nuget.g.props
So priming either a build or a restore of the specific EpicGames.Horde project (even in your installed build + packaging it - dotnet restore “C:\Program Files\Epic Games\UE_5.5\Engine\Source\Programs\Shared\EpicGames.Horde\EpicGames.Horde.csproj”) would certainly work around this issue as the *nuget.g.props would get picked up in the ProjectInstance construction. You could also modify your InstalledEngineBuild.xml and make sure to copy over the related files.
Kind regards,
Julian
Hi there,
I apologize for the delayed response.
I have been able to test your suggestion last week, and it worked flawlessly. Thank you!
We have added this line to our checkout process before first RunUAT call:
dotnet restore "C:\Program Files\Epic Games\UE_5.5\Engine\Source\Programs\Shared\EpicGames.Horde\EpicGames.Horde.csproj"