Important note for .NET Core 3.0
Assembly trimming via this tool will not work on .NET Core 3.0 (so you could only pack app with this tool without trimming). Recommended approach is to use built-in functionality in 3.0 for trimming and packing.
Sample approach: https://www.hanselman.com/blog/MakingATinyNETCore30EntirelySelfcontainedSingleExecutable.aspx
dotnet-warp
Global .NET Core tool, which allows to pack .NET Core projects to single executable.
In fact it's just a wrapper around Warp (https://github.com/dgiagio/warp) and ILLink.Tasks.
Supported environments are same as Warp: win-x64, linux-x64, osx-x64
Install
$ dotnet tool install --global dotnet-warp
Usage
Usage: dotnet-warp [arguments] [options]
Arguments:
ProjectFolder Project path.
Options:
-l|--link-level <LEVEL> Optional. Sets link level. Available values: Normal, Aggressive.
-nc|--no-crossgen Optional. Disables Cross Gen during publish when linker is enabled. Sometimes required for linker to work. See issue: https://github.com/mono/linker/issues/314
-v|--verbose Optional. Enables verbose output.
-p|--property Optional. Pass any additional MSBuild properties to 'dotnet publish' command.
Examples
Packs project in current directory to single executable using Warp.
$ dotnet-warp
Links project before packing using ILLink.Tasks
$ dotnet-warp -l aggressive
$ dotnet-warp -p:Version=2.0.1
Aggressive option sets /p:RootAllApplicationAssemblies=false during publish. More info