.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跨平臺或掃描二維碼關注
總結
以上是生活随笔為你收集整理的.NET Core 2.0应用程序大小减少50%的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Orleans解决并发之痛(四):Str
- 下一篇: asp.net ajax控件工具集 Au