RunUBT ERROR: UnrealBuildTool failed to compile

Hello,

When I use UE download from the LAUNCHER, everything works great. I have VS 2022 set up per the Epic instructions for UE 5.5:

[Image Removed]

I can package for Android and Windows apps, and get no errors:

[Image Removed]

Now I need to create a dedicated server, so I built UE from the source code on GitHub, using the 5.54-release branch. Everything seemed fine. But when launch the new UE build from source, I am getting for following error message:

LogTurnkeySupport: Warning: Turnkey failed to run properly, full Turnkey output:
Running AutomationTool...
Using bundled DotNet SDK version: 8.0.300
Building AutomationTool...
C:\.UE\.Engines\UnrealEngine\Engine\Binaries\ThirdParty\DotNet\8.0.300\win-x64\sdk\8.0.300\Microsoft.Common.CurrentVersion.targets(2401,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "BouncyCastle.Crypto, Version=1.8.3.0, Culture=neutral, PublicKeyToken=0e99375e54769942". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. [C:\.UE\.Engines\UnrealEngine\Engine\Source\Programs\AutomationTool\Apple\Apple.Automation.csproj]
C:\.UE\.Engines\UnrealEngine\Engine\Binaries\ThirdParty\DotNet\8.0.300\win-x64\sdk\8.0.300\Microsoft.Common.CurrentVersion.targets(2401,5): warning MSB3243: No way to resolve conflict between "BouncyCastle.Crypto, Version=1.8.6.0, Culture=neutral, PublicKeyToken=0e99375e54769942" and "BouncyCastle.Crypto, Version=1.8.3.0, Culture=neutral, PublicKeyToken=0e99375e54769942". Choosing "BouncyCastle.Crypto, Version=1.8.6.0, Culture=neutral, PublicKeyToken=0e99375e54769942" arbitrarily. [C:\.UE\.Engines\UnrealEngine\Engine\Source\Programs\AutomationTool\Apple\Apple.Automation.csproj]
C:\.UE\.Engines\UnrealEngine\Engine\Binaries\ThirdParty\DotNet\8.0.300\win-x64\sdk\8.0.300\Microsoft.Common.CurrentVersion.targets(3398,5): error MSB3554: Cannot write to the output file "C:\.UE\.Engines\UnrealEngine\Engine\Source\Programs\AutomationTool\IOS\obj\Development\IOS.Automation.Properties.Resources.resources". Could not find a part of the path 'C:\.UE\.Engines\UnrealEngine\Engine\Source\Programs\AutomationTool\IOS\Resources\GreenCheck.png'. [C:\.UE\.Engines\UnrealEngine\Engine\Source\Programs\AutomationTool\IOS\IOS.Automation.csproj]
Build FAILED.
C:\.UE\.Engines\UnrealEngine\Engine\Binaries\ThirdParty\DotNet\8.0.300\win-x64\sdk\8.0.300\Microsoft.Common.CurrentVersion.targets(2401,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "BouncyCastle.Crypto, Version=1.8.3.0, Culture=neutral, PublicKeyToken=0e99375e54769942". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. [C:\.UE\.Engines\UnrealEngine\Engine\Source\Programs\AutomationTool\Apple\Apple.Automation.csproj]
C:\.UE\.Engines\UnrealEngine\Engine\Binaries\ThirdParty\DotNet\8.0.300\win-x64\sdk\8.0.300\Microsoft.Common.CurrentVersion.targets(2401,5): warning MSB3243: No way to resolve conflict between "BouncyCastle.Crypto, Version=1.8.6.0, Culture=neutral, PublicKeyToken=0e99375e54769942" and "BouncyCastle.Crypto, Version=1.8.3.0, Culture=neutral, PublicKeyToken=0e99375e54769942". Choosing "BouncyCastle.Crypto, Version=1.8.6.0, Culture=neutral, PublicKeyToken=0e99375e54769942" arbitrarily. [C:\.UE\.Engines\UnrealEngine\Engine\Source\Programs\AutomationTool\Apple\Apple.Automation.csproj]
C:\.UE\.Engines\UnrealEngine\Engine\Binaries\ThirdParty\DotNet\8.0.300\win-x64\sdk\8.0.300\Microsoft.Common.CurrentVersion.targets(3398,5): error MSB3554: Cannot write to the output file "C:\.UE\.Engines\UnrealEngine\Engine\Source\Programs\AutomationTool\IOS\obj\Development\IOS.Automation.Properties.Resources.resources". Could not find a part of the path 'C:\.UE\.Engines\UnrealEngine\Engine\Source\Programs\AutomationTool\IOS\Resources\GreenCheck.png'. [C:\.UE\.Engines\UnrealEngine\Engine\Source\Programs\AutomationTool\IOS\IOS.Automation.csproj]
    2 Warning(s)
    1 Error(s)
Time Elapsed 00:00:02.44
RunUBT ERROR: UnrealBuildTool failed to compile.
RunUAT.bat ERROR: AutomationTool failed to compile.
BUILD FAILED

Hello!

Can you share the full log? The problematic dll should be sourced through nuget. Could your organization have some firewall rules that are preventing the package from being downloaded? The fact that you can package for Android and Windows is weird as the Apple automation assembly should have been compiled with UAT when you ran the editor the first time.

Martin

Hi Martin! Good to see you again. I think I may have fixed it. When I did it the first time, the tutorial I was following had a lot of exclusions:

Setup.bat --exclude=Win32 --exclude=WinRT --exclude=Mac --exclude=MacOS --exclude=MacOSX --exclude=mac-arm64 --exclude=IOS --exclude=osx --exclude=osx64 --exclude=osx32 --exclude=TVOS --exclude=Linux32 --exclude=HTMLIn the errors in my original post, I noticed there were a lot of “could not find a reference”. Remembering all the exclusions in Setup.bat, I went through the process again but this time ran Setup.bat with no exclusions and now it works.

The size is a lot bigger, but it works. Is there a way to exclude iOS and Linux, and not get this error?

The only error I am still seeing seems to be related to FAB:

[Image Removed]

I get this error on launch every time I make a new project. A quick Google search said to disable the FAB plugin. Doing so makes the error go away. Is that the right solution? Disabling the FAB plugin? Or is there something else I should be doing? I don’t use the FAB plugin, so it’s not a big deal to disable it. Just curious.

Finally, I have a question about MSVC:

I am working in UE 5.5.4 (because Meta only recently released the plugin for UE 5.6). Therefore I setup VS with MSVC v14.38-17.8.

[Image Removed]Note that 17.11 is not installed.

During the build process, I get a warning to “Manage NuGet Packets”.

[Image Removed]

It seems to be complaining that 17.11.14 in installed and has vulnerabilities. But I didn’t think 17.11 was installed?

When I try to replace those with 17.8 (per the Epic Games instructions), it throws up errors that “earlier packets were found”.

[Image Removed]Instead, I need to replace 17.11.14 with a later version. So I just chose the version closest to the one already installed, which is 17.11.48, and then it builds with no errors.

[Image Removed]

I’ve always just got UE from the Launcher, so building from source is new to me. I’m not sure why VS is complaining about version 17.11.14 when it appears in the VS Installer that 17.11 is not installed?

Thanks for your help.

I think I know the problem with the exclusion on setup.bat. Setup.bat downloads the binary files that we can’t store in the GH repo. The missing assembly is normally in this location: Binaries\ThirdParty\IOS\BouncyCastle.Crypto.dll

The reference is coming from Apple.Automation.csproj which comes with the GH repo. You could probably delete that csproj and the IOS\Mac equivalent. The Automation extensions are discovered when UAT is compiled and when it initializes. There should be no ill effect to not have the files unless you intend to target those platforms at some point. I’ll have a chat with our Apple team so they can look at changing that dependency in future release so the package is picked from NuGet instead of a local folder that might not exist.

As for the vulnerability, it’s ok to select the first one that is more recent and not deemed vulnerable. That often happens when using older releases and the vulnerabilities have been discovered after be released the last hotfixes.

Depending on the level of sensitivity of your organization, you can also just “live with it”. A good firewall and other regular security measures should isolate you from malicious attackers. In this current case, a hacker would need to be able to write file in some temps locations before UAT is being executed and it’s not even clear if we are using the part of the assembly that is vulnerable. It would be different if the tool was exposed externally.

Those numbers can be misleading as they are somewhat unrelated. The VS Installer is showing the C++ toolchains while the NuGet tool is showing the available versions of the Microsoft.Build assembly. Those NuGet packages are downloaded separately and stored in a cache (C:\Users\<USERNAME>\.nuget\packages\microsoft.build\…\Microsoft.Build.dll)

The version number likely ties the assemblies to the version of VS at the time they got published but their use can be controller through the csproj references.

Martin

Do you know why VS is complaining about 17.11 when according to the VS Installer, it appears that 17.11 isn’t even installed? It appears that 17.8 and 17.10 are installed, but not 17.11...

Ah, good explanation. Thanks, Martin. We can close this.