打造史上最小尺寸.Net Core单文件应用程序

.Net Core支持将应用程序发布成单文件进行部署和分发。

以下示例将Windows应用作为独立的单文件应用程序发布:

 dotnet publish -r win-x64 -c Release /p:PublishSingleFile=true /p:PublishTrimmed=true /p:IncludeNativeLibrariesForSelfExtract=true

查看publish目录,确实只有一个文件,但是尺寸比较大,这还仅仅是一个Hello World程序,就有将近21M。

有没有办法让文件尺寸变得更小呢?

bflat

首先,下载最新版bflat(https://github.com/MichalStrehovsky/bflat/releases),并解压到D:\bflat-0.0.1-win64\(任意目录皆可)。

然后,在项目目录下运行如下命令:

D:\bflat-0.0.1-win64\bflat.exe build Program.cs

编译完成后,生成的文件Program.exe大小只有2.69M,差不多是原来的1/10了。

这还不是最神奇的,再试试加上参数后运行:

D:\bflat-0.0.1-win64\bflat.exe build --no-reflection --no-stacktrace-data  --no-globalization --no-exception-messages Program.cs

。这还不是最神奇的,再试试加上参数后运行:
D:\bflat-0.0.1-win64\bflat.exe build --no-reflection --no-stacktrace-data  --no-globalization --no-exception-messages Program.cs
文件大小只有734K!而且能够正常运行。
这算不算史上最小尺寸.Net Core单文件应用程序?!
结论
bflat是结合Roslyn和NativeAOT的实验性编译器。因此,您可以使用高性能CoreCLR GC和本机代码生成器 (RyuJIT) 访问最新的C#功能。
就目前来说,bflat只能作为一个玩具。可以看到它只能编译单个cs文件,如果我加入nuget包,则无法编译。
但是,bflat现在还是0.0.1版本,想象一下,如果继续发展下去,能够打造真的微型应用程序的话,还是很有吸引力的。
如果你觉得这篇文章对你有所启发,请关注我的个人公众号”My IO“,记住我!
My IO
(0)

相关推荐