How to Package a .NET Core App into a Single EXE

This guide shows how to publish a self-contained .NET Core application and then pack the published output into one executable with BoxedApp Packer. The packed EXE doesn't extract embedded assets to disk: files remain virtual, which helps with portability, integrity, and basic IP protection.

Tip: .NET Core/5+/6+/7+ support single-file publish, but many apps still ship additional content (native libs, data, configs). BoxedApp Packer consolidates everything into one EXE and serves files from memory at runtime—no temp files created.

1) Create and test a sample app

mkdir PackedDotNetCoreApp
cd PackedDotNetCoreApp
dotnet new console
dotnet run

Edit Program.cs as you like and verify it runs.

2) Publish self-contained

Publish for your target RID (example: win-x86 or win-x64) and include the runtime:

dotnet publish PackedDotNetCoreApp.csproj -c Release -r win-x86 --self-contained true

After publish, you'll have a folder like bin/Release/netX.Y/win-x86/publish containing the EXE and all dependencies.

3) Pack into one EXE with BoxedApp Packer

  1. Start BoxedApp Packer. Set Input exe to your published EXE.
  2. In FilesApplication Directory, click Import Directory... and choose the publish folder to add the content files.
  3. (Optional) Use Override command line to bake in arguments you normally pass at launch.
  4. Click Build to produce the single packed EXE.
Architecture note: If you published for win-x86, keep the packed output x86 for maximum compatibility; use win-x64 if your app truly requires 64-bit.

Why this works

  • BoxedApp intercepts file I/O and serves resources from memory, so the packed app doesn't drop files to disk.
  • You ship a single binary that runs on machines without preinstalled .NET runtime (because you published self-contained).
  • Assets and native libs are harder to extract during casual inspection.