I created a c# console app using the .net 9 framework with the goal of having Horde run this app on a schedule every day. I basically created a simple Build Graph with a “spawn” tag and had it call the executable I created. I ran the .NET Core and Desktop Runtime 9.0.0 installer on all the Horde agents beforehand. However, when I execute the job, I get the following error. Am I missing something?
========== Starting: Scrape ==========
Running: <path to exe>
You must install or update .NET to run this application.
App: <path to exe>
Architecture: x64
Framework: ‘Microsoft.NETCore.App’, version ‘9.0.0’ (x64)
.NET location: E:\HordeAgent\Sandbox\Demo-Inc-Full\Sync\Engine\Binaries\ThirdParty\DotNet\8.0.300\win-x64
The following frameworks were found:
8.0.5 at [E:\HordeAgent\Sandbox\Demo-Inc-Full\Sync\Engine\Binaries\ThirdParty\DotNet\8.0.300\win-x64\shared\Microsoft.NETCore.App]
Learn more:
To install missing framework, download:
Good morning,
I would suggest sticking with even version dotnet releases as these are intended to be LTS versions. Epic’s dotnet version policy is also to only move the engine to even numbered releases.
If there is a pressing need to use dotnet9 the option would be to make a self contained app, though I wouldn’t recommend that, hope this helps
Is there a reason horde can’t simply run the exe even if the agent itself has all the dotnet runtime dependencies?
Yes, because UAT and other machinery explicitly uses, looks for, and sets dotnet version to 8, which is the supported version.
.NET location: E:\HordeAgent\Sandbox\Demo-Inc-Full\Sync\Engine\Binaries\ThirdParty\DotNet\8.0.300\win-x64
Specifically this in UAT:
rem add the dotnet sdk in the repo as the current dotnet sdk
set UE_DOTNET_VERSION=8.0.300
set UE_DOTNET_DIR=%~dp0..\..\Binaries\ThirdParty\DotNet\%UE_DOTNET_VERSION%\%UE_DOTNET_ARCH%
set PATH=%UE_DOTNET_DIR%;%PATH%
set DOTNET_ROOT=%UE_DOTNET_DIR%
Thank you Josh. I decided to use the self-contained publish for now but will consider downgrading the version for future compatibility.