.NET Core 2.0應用程式大小減少50%
.NET Core 2.0應用程式減小體積瘦身官方工具 IL Linker。
IL Linker 來源於mono的linker https://github.com/mono/linker,目前還是預覽版本。
在一般的情況下,連結器可以將應用程式的大小減少50%,大型應用程式的大小可能更有利,連結器會刪除應用程式中的程式碼和依賴庫,而這些程式碼不會被任何程式碼路徑訪問。它實際上是應用程式特定的無效程式碼分析。
下面正式開始體驗
版本必須為.NET Core 2.0
新建應用
新建一個控制檯應用
dotnet new console -o linkdemo
然後新增nuget.config
dotnet new nuget
接著在config 中加入 <add key="dotnet-core" value="https://dotnet.myget.org/F/dotnet-core/api/v3/index.json" /> 如下:
<?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
<RID> 以下值可用
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 瘦身。
注意事項:
目前只支援釋出獨立部署應用程式。需要指定執行時ID。
它目前是一個實驗功能。我們打算在隨後的.NET Core版本中進行支援。
連結僅在釋出時發生,因此連結的應用程式需要在釋出後進行測試,而不僅僅是在構建之後。
連結器將會破壞使用反射的一些應用程式。請參閱使用IL Linker高階功能。
參考文件:https://github.com/dotnet/core/blob/master/samples/linker-instructions.md
原文地址:http://www.cnblogs.com/linezero/p/7477233.html
.NET社群新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注