.NET Core 3.0 publishes a single executable file

3.0 arrived in September and can produce one file containing the application, its dependencies and the runtime — which changes what deployment means compared with a PHP release directory.

$ dotnet publish -c Release -r linux-x64 
    -p:PublishSingleFile=true -p:PublishTrimmed=true -o ./out

$ ls -la out
-rwxr-xr-x  38M  Orders
-rw-r--r--  1.2K appsettings.json

# scp one binary. no runtime on the target, no composer install.

Trimming removes assemblies the analyser cannot see being used, which breaks reflection-based code silently — so it needs testing rather than assuming, and the failure is a missing type at runtime. The single file is extracted to a temporary directory on first run, which surprises anyone expecting a truly static binary. Against a PHP deploy the trade is clear: a larger artefact built once, against a smaller one that depends on the target having the right runtime and extensions.