.NET Core 2.0應用程序大小減小50%

 .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
  • <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

均可以成功執行。

咱們看看體積大小。

 

 基本上減少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

相關文章
相關標籤/搜索