> Go produces a statically linked binary and C# requires a runtime be installed
Not true since .NET Core 3.
$ dotnet publish --self-contained --runtime osx.11.0-x64 -p:PublishSingleFile=true
Not true since .NET Core 3.
$ dotnet publish --self-contained --runtime osx.11.0-x64 -p:PublishSingleFile=true
In .NET Core 3, you can build and distribute a single-file executable which, when run, will actually unpack an executable and a ton of DLLs into a temp directory, and run it from there.
In .NET 5 they changed it, so that when you build a "single-file" executable, you actually get an executable plus a few DLLs, which must be distributed together.