.NET Core 中发布创建独立的可执行文件(.exe),即不依赖于机器上预装的 .NET 运行时环境的方式,是通过使用 .NET Core 的发布功能来实现的。独立发布(self-contained deployment,简称 SCD)意味着所有必需的 .NET Core 库和运行时组件都会被包含在发布的应用程序中,使得该应用可以在没有安装 .NET Core 的环境下运行。本文主要介绍.NET Core中Console控制台项目,通过.NET Core命令或Warp工具,发布成.exe可执行独立的应用程序的方法。

1、.NET Core命令生成.exe可执行程序

如果是.NET Core 1.0可能需要,csproj(支持的rid列表)中添加目标运行时的运行时标识符:

<PropertyGroup>
    <RuntimeIdentifiers>win10-x64;ubuntu.16.10-x64</RuntimeIdentifiers>
</PropertyGroup>

从.NET Core 2.0开始不再需要上述步骤。

运行发布应用程序命令

dotnet publish -c Release -r win10-x64 

或者 

dotnet publish -c Release -r ubuntu.16.10-x64

2、使用Warp工具生成单独执行程序

Warp允许您创建独立的单个二进制应用程序,使其更简单,更符合人体工程学,从而将您的应用程序交付给您的客户。当您使用的技术(如Node.js.NET CoreJava等)包含许多必须与应用程序一起提供的依赖项时,独立的二进制文件特别方便。
Warp是用Rust编写的,在LinuxWindowsmacOS上都受支持。

官方地址https://github.com/dgiagio/warp

2.1、直接使用warp-packer

.\warp-packer --arch windows-x64 --input_dir bin/Release/netcoreapp2.1/win10-x64/publish --exec myapp.exe --output myapp.exe

bin/Release/netcoreapp2.1/win10-x64/publish:发布的路径,替换成你的项目发布的路径就可以了。

2.2、使用dotnet-warp工具

官方地址https://github.com/Hubert-Rybak/dotnet-warp

1)安装dotnet-warp工具

dotnet tool install -g dotnet-warp

2)打包命令

根据需要任选一个即可。

使用Warp将当前目录中的项目打包为单个可执行文件

dotnet-warp 

使用ILLink.Tasks打包前链接项目

dotnet-warp -l aggressive

注意: .NET团队计划在.NET Core 3.0中内置一个支持生成“独立EXE”的打包解决方案。

推荐文档