打造史上最小尺寸.Net Core单文件应用程序
.Net Core支持將應(yīng)用程序發(fā)布成單文件進(jìn)行部署和分發(fā)。
以下示例將Windows應(yīng)用作為獨(dú)立的單文件應(yīng)用程序發(fā)布:
?dotnet?publish?-r?win-x64?-c?Release?/p:PublishSingleFile=true?/p:PublishTrimmed=true?/p:IncludeNativeLibrariesForSelfExtract=true查看publish目錄,確實(shí)只有一個(gè)文件,但是尺寸比較大,這還僅僅是一個(gè)Hello World程序,就有將近21M。
有沒(méi)有辦法讓文件尺寸變得更小呢?
bflat
首先,下載最新版bflat(https://github.com/MichalStrehovsky/bflat/releases),并解壓到D:\bflat-0.0.1-win64\(任意目錄皆可)。
然后,在項(xiàng)目目錄下運(yùn)行如下命令:
D:\bflat-0.0.1-win64\bflat.exe?build?Program.cs編譯完成后,生成的文件Program.exe大小只有2.69M,差不多是原來(lái)的1/10了。
這還不是最神奇的,再試試加上參數(shù)后運(yùn)行:
D:\bflat-0.0.1-win64\bflat.exe?build?--no-reflection?--no-stacktrace-data??--no-globalization?--no-exception-messages?Program.cs文件大小只有734K!而且能夠正常運(yùn)行。
這算不算史上最小尺寸.Net Core單文件應(yīng)用程序?!
結(jié)論
bflat是結(jié)合Roslyn和NativeAOT的實(shí)驗(yàn)性編譯器。因此,您可以使用高性能CoreCLR GC和本機(jī)代碼生成器 (RyuJIT) 訪問(wèn)最新的C#功能。
就目前來(lái)說(shuō),bflat只能作為一個(gè)玩具。可以看到它只能編譯單個(gè)cs文件,如果我加入nuget包,則無(wú)法編譯。
但是,bflat現(xiàn)在還是0.0.1版本,想象一下,如果繼續(xù)發(fā)展下去,能夠打造真的微型應(yīng)用程序的話,還是很有吸引力的。
如果你覺(jué)得這篇文章對(duì)你有所啟發(fā),請(qǐng)關(guān)注我的個(gè)人公眾號(hào)”My IO“,記住我!
總結(jié)
以上是生活随笔為你收集整理的打造史上最小尺寸.Net Core单文件应用程序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 关于c#:Filter Serilog日
- 下一篇: 【汇总】多种方法教你绕过 TPM 2.0