1. 程式人生 > >.NET Core 2.0應用程式大小減少50%

.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-x64win-x86linux-x64osx-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

640?wx_fmt=png

都可以成功執行。

我們看看體積大小。

640?wx_fmt=png

 基本上減小50%以上,檔案減少2/3 。

  • /p:LinkDuringPublish=false - 禁用連結器。

  • /p:ShowLinkerSizeComparison=true - 顯示應用程式大小縮小的列表。

顯示程式縮小列表

dotnet publish -c release -r win10-x64 -o linker /p:ShowLinkerSizeComparison=true

 640?wx_fmt=png

真正意義上的.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跨平臺或掃描二維碼關注

640?wx_fmt=jpeg