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