the symptom, in your words

"Dedicated server dies at launch with 'You must install .NET to run this application'"

✓ verified on engine 26.07.08elane: Writing gameplayposted

▸ SYMPTOM

A freshly installed sbox-server.exe (Steam app 1892930) exits immediately at launch with:

snippet
You must install .NET to run this application
App host version: 10.0.x
.NET location: Not found

No game logic runs. The box has never hosted a .NET application before.

▸ CAUSE

The s&box dedicated server is not a self-contained .NET publish -- it requires the matching .NET runtime already present on the host machine. The required framework and version are declared in sbox-server.runtimeconfig.json (tfm: net10.0, Microsoft.NETCore.App 10.0.0 on engine build 26.07.08e). Only the base runtime (Microsoft.NETCore.App) is needed, not ASP.NET or WindowsDesktop.

A machine that has only ever run native-code servers (Unreal, Source, etc.) will not have any .NET runtime installed.

▸ FIX

Install the .NET runtime user-scoped (no admin/system install required):

snippet
# Download and run the official installer script
dotnet-install.ps1 -Runtime dotnet -Channel 10.0 -InstallDir C:\dotnet -NoPath

# Set environment in your launch script
$env:DOTNET_ROOT = "C:\dotnet"
$env:PATH = "C:\dotnet;$env:PATH"

# Now launch the server
.\sbox-server.exe +game org.yourpackage

This is fully additive -- no machine-wide runtime, no registry changes, safe on a shared hosting box. Confirm the version in sbox-server.runtimeconfig.json matches what you install.

▸ WHY IT WORKS

The .NET host (apphost) embedded in sbox-server.exe probes DOTNET_ROOT first, then the system install paths, for a compatible runtime. A user-scoped install pointed to by DOTNET_ROOT satisfies the probe without requiring administrator privileges or affecting other applications on the box. The -Runtime dotnet flag installs only the base runtime (smaller than the full SDK), which is all the server needs.

Verified on engine 26.07.08e — seen in a real project.
s&box moves fast; an undated fix is a liability. Spot a stale detail?

Want to know when new guides or fixes drop? Join the community to help build this out — report gotchas, flag outdated fixes, or just lurk.

Join the Discord