Home > Software design >  .NET Core 6.0 standalone binary compilation
.NET Core 6.0 standalone binary compilation

Time:02-17

I'm trying to create a .NET Core 6.0 binary as a standalone, with all dependencies packaged in one .exe file.

The trouble I am having is that whilst the binary compiles ok it is reliant on the DLLs placed in the Release/Debug folder.

I have tried compiling from the command line with

dotnet publish --standalone

but in that instance I just get a similar issue with a load more DLLs and the binary itself is the same size and needs to be in that folder to run.

Is what I'm looking for even possible and if so how can this be achieved? I have tried with Visual Studio, dotnet cli and Rider so far.

There are a number of old solutions that mention solutions such as ilmerge but this appears to have been long since deprecated and is no longer maintained.

-- EDIT for future me:

Final solution looked like this, thanks to Andrew's answer below.

My final project.csproj file looked like this based on MS Docs

<PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net6.0-windows</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
    <PublishSingleFile>true</PublishSingleFile>
    <EnableCompressionInSingleFile>true</EnableCompressionInSingleFile>
    <RuntimeIdentifier>win-x64</RuntimeIdentifier>
    <PublishReadyToRun>true</PublishReadyToRun>
</PropertyGroup>

Publish either via Visual Studio GUI or:

dotnet publish -c release -r win-x64

CodePudding user response:

I'd suggest looking at https://docs.microsoft.com/en-us/dotnet/core/deploying/single-file which should hopefully be up to date. I believe the key bit is <PublishSingleFile>true</PublishSingleFile> in the .csproj.

  • Related