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

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了打造史上最小尺寸.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

文件大小只有734K!而且能够正常运行。

这算不算史上最小尺寸.Net Core单文件应用程序?!

结论

bflat是结合Roslyn和NativeAOT的实验性编译器。因此,您可以使用高性能CoreCLR GC和本机代码生成器 (RyuJIT) 访问最新的C#功能。

就目前来说,bflat只能作为一个玩具。可以看到它只能编译单个cs文件,如果我加入nuget包,则无法编译。

但是,bflat现在还是0.0.1版本,想象一下,如果继续发展下去,能够打造真的微型应用程序的话,还是很有吸引力的。

如果你觉得这篇文章对你有所启发,请关注我的个人公众号”My IO“,记住我!

以上是关于打造史上最小尺寸.Net Core单文件应用程序的主要内容,如果未能解决你的问题,请参考以下文章

获取.Net Core 3.1 单文件可执行版本号

如何打造单文件 Blazor Server 应用

.NET Core 3.0 Preview 5 亮点之一:发布单文件可执行程序

一个更好用的.NET Core程序瘦身器,减小程序尺寸到1/3

.net core实现单文件上传多文件上传js提交实现文件上传图片预览

Dora.Interception, 为.NET Core度身打造的AOP框架[4]:演示几个典型应用