Hubert-Rybak / dotnet-warp

.NET Core global tool for producing single executable using Warp
MIT License
249 stars 23 forks source link

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

NuGet Build status

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