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

来源:http://www.cnblogs.com/linezero/archive/2017/09/05/7477233.html
-Advertisement-
Play Games

.NET Core 2.0應用程式減小體積瘦身官方工具 IL Linker。 IL Linker 來源於mono的linker https://github.com/mono/linker,目前還是預覽版本。 在一般的情況下,鏈接器可以將應用程式的大小減少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

都可以成功執行。

我們看看體積大小。

 

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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 修改資料庫配置文件:tnsnames.ora 【我的資料庫位置:D:\app\Icey-evil\product\11.2.0\dbhome_1\NETWORK\ADMIN】 根據伺服器地址加入以下內容: 說明:HOST = 10.88.250.28 是需要連接的oracle伺服器 IP,SERVI ...
  • Apply - 涉及以下兩個步驟中的一步或兩步(取決於Apply的類型): 1、A1:把右表表達式應用於左表的行 2、A2:添加外部行 Apply運算符把右表表達式應用於左輸入的每一行。右表達式可以引用左輸入中的列,對於左表中的每一行,都要計算一次右邊輸入的表達式。這一步會把... ...
  • [20170904]11Gr2 查詢游標為什麼不共用腳本.txt--//參考鏈接下麵的註解腳本:https://carlos-sierra.net/2017/09/01/poors-man-script-to-summarize-reasons-why-cursors-are-not-shared/ ...
  • 目錄 · Overview · Introduction · Use cases · Manual Setup · Assumption · Configuration · Startup & test · Principle · Topic · Distribution · Producer ·  ...
  • 網上有很多很好的PPT,可惜一般作者都加了名字和主題,現在我們就來說說如何修改PPT中左下方狀態欄的主題名稱。 如下圖所示,紅色方框內就是別人設置的主題。 網上很多網友都說:點擊"視圖" --》"幻燈片母版" --》"重命名" --》"修改" ,保存即可,但事實上並不行,下麵我來說說正確的方法吧。 ...
  • 下載rpm包見:http://www.cnblogs.com/grey-wolf/p/7472680.html 1、rz上傳到伺服器,解壓縮 2、安裝rpm包 註意:如果不是全新安裝,而是之前用rpm裝過,沒裝好,又卸載的情況下安裝,可能會出現如下情況: 在執行rpm -ivh mysql-comm ...
  • 本篇以我自己的網站為例來通俗易懂的講述網站的常見漏洞,如何防止網站被入侵,如何讓網站更安全。 要想足夠安全,首先得知道其中的道理。 本文例子通俗易懂,主要講述了 各種漏洞 的原理及防護,相比網上其它的web安全入門文章來說,本文更豐富,更加具有實戰性和趣味性。 本文講解目錄大致如下,講述什麼是暴力破 ...
  • http: https: ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...