.NET Core 2.0應用程序減少體積瘦身官方工具 IL Linker。linux
IL Linker 來源於mono的linker https://github.com/mono/linker,目前仍是預覽版本。git
在通常的狀況下,連接器能夠將應用程序的大小減小50%,大型應用程序的大小可能更有利,連接器會刪除應用程序中的代碼和依賴庫,而這些代碼不會被任何代碼路徑訪問。它其實是應用程序特定的無效代碼分析。github
下面正式開始體驗json
版本必須爲.NET Core 2.0api
新建一個控制檯應用工具
dotnet new console -o linkdemo測試
而後添加nuget.configspa
dotnet new nugetcode
接着在config 中加入 <add key="dotnet-core" value="https://dotnet.myget.org/F/dotnet-core/api/v3/index.json" /> 以下:xml
<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <!--LineZero --> <clear /> <add key="dotnet-core" value="https://dotnet.myget.org/F/dotnet-core/api/v3/index.json" /> </packageSources> </configuration>
添加ILLink 程序包
dotnet add package ILLink.Tasks -v 0.1.4-preview-906439
最新版本能夠到https://dotnet.myget.org/feed/dotnet-core/package/nuget/Illink.Tasks 查看
發佈程序
dotnet publish -c release -r <RID> -o out
win-x64
, win-x86
, linux-x64
, osx-x64
win10 包含linker的發佈
dotnet publish -c release -r win10-x64 -o linker
不包含linker
dotnet publish -c release -r win10-x64 -o nolinker /p:LinkDuringPublish=false
均可以成功執行。
咱們看看體積大小。
基本上減少50%以上,文件減小2/3 。
/p:LinkDuringPublish=false
- 禁用連接器。/p:ShowLinkerSizeComparison=true
- 顯示應用程序大小縮小的列表。顯示程序縮小列表
dotnet publish -c release -r win10-x64 -o linker /p:ShowLinkerSizeComparison=true
真正意義上的.NET Core 瘦身。
注意事項:
參考文檔:https://github.com/dotnet/core/blob/master/samples/linker-instructions.md