NuGet dependencies not getting copied to AutomationTool output directory

jyorkeSES
Thu, 27 Mar 2025 21:30:37 +0000
Platform & Builds

I’m running into an issue with a new set of build machines that I am attempting to set up as Horde workers where build scripts are failing due to the absence of packages that are not present. For example:

System.IO.FileNotFoundException: Could not load file or assembly 'Karambolo.PO, Version=1.12.0.0, Culture=neutral, PublicKeyToken=496b38436bb9edeb'. The system cannot find the file specified.
File name: 'Karambolo.PO, Version=1.12.0.0, Culture=neutral, PublicKeyToken=496b38436bb9edeb'
   at ExoBuild.Automation.Tasks.PseudolocalizePoFileTask.ExecuteAsync(JobContext Job, HashSet`1 BuildProducts, Dictionary`2 TagNameToFileSet)
   at AutomationTool.BgScriptNodeExecutor.Execute(JobContext job, Dictionary`2 tagNameToFileSet) in C:\Horde\ag_dev_horde\Sync\UE\Engine\Source\Programs\AutomationTool\BuildGraph\BgNodeExecutor.cs:line 378
[...snip...]

Our game is based on Unreal Engine 5.5.3.

Karambolo.PO is a package that is included in our custom automation script’s project file ExoBuild.Automation.csproj using a standard <PackageReference Include="Karambolo.PO" Version="1.12.0" />.

Looking in the Engine\Binaries\DotNET\AutomationTool directory after running a RunUAT.cmd command, an AutomationTool built on one of our new machines is missing the following files which are present when building on my own machine:

AWSSDK.S3.dll

BouncyCastle.Crypto.dll

EpicGames.BuildGraph.dll

EpicGames.BuildGraph.pdb

EpicGames.BuildGraph.xml

EpicGames.Perforce.dll

EpicGames.Perforce.Native.dll

EpicGames.Perforce.Native.dylib

EpicGames.Perforce.Native.pdb

EpicGames.Perforce.Native.so

EpicGames.Perforce.pdb

Karambolo.Common.dll

Karambolo.PO.dll

Microsoft.IdentityModel.Abstractions.dll

Microsoft.IdentityModel.JsonWebTokens.dll

Microsoft.IdentityModel.Logging.dll

Microsoft.IdentityModel.Tokens.dll

MSVCP140.dll

System.IdentityModel.Tokens.Jwt.dll

VCRUNTIME140.dll

VCRUNTIME140_1.dll

The new machines were set up with:

Windows 11

Unreal Prerequisite installer

.NET SDK 8.0.407

.NET Framework 4.7.2 Developer Pack

.NET Framework 4.8.1 Developer Pack

P4V and Command-Line P4 2025.1

Horde Agent

The lack of DLLs occurs whether UAT is built via a Horde command or manually. I have attempted to install Visual Studio 2022 on one machine and it still occurs.

I have attempted to cherry-pick the following changes from UE5-Main to see if they would help address the issue, but they did not:

CL 37749886: AutomationTool: Don’t build directly to the Engine\Binaries\DotNET directory

CL 39916720: Refactor dotnet dependency scan into batch file

CL 40175845: Update UAT script compiling

CL 40295527: EpicGames.MsBuild: Properly escape semicolon in property argument

CL 40296659: EpicGames.MsBuild: Handle platform specific TargetFramework projects that need to be build in a separate call to dotnet build

This is the log that AutomationTool generates when compiling (Engine/Programs/AutomationTool/Saved/Logs/Log.txt):

Log.txt (27.4 KB)

I’m really at a loss for how to proceed here. What should I attempt to do next, or how can I further diagnose this problem?

1 post - 1 participant