Du verwendest dotnet build aber Single-File/Self-Contained ist eigentlich eine publish-Funktion.
/p:SelfContained=true
macht dass neben deinem Code auch die .NET-Runtime + native Runtime-Binaries (hostfxr, hostpolicy, clrjit, diverse System.*.dll usw.) in den Output kopiert werden. Verwende statt build einfach publish.
dotnet publish -r win-x64 /p:SelfContained=true /p:PublishSingleFile=true -f net8.0