我開發了一個對.NET程式進行瘦身的工具

我開發了一個對.NET程式進行瘦身的工具

我開發了一個對.Net程式瘦身的工具,可以把被引用但是沒有被使用的組件刪除。我用它把一個.Net core程式從`147兆`瘦身到`59.5`兆。

最後更新 2021/12/26 下午9:56
杨中科
預計閱讀 2 分鐘
分類
.NET
標籤
.NET C# 瘦身

我開發了一個對 .Net 程式瘦身的工具,可以把被引用但沒有被使用的組件刪除。我用它把一個 .Net core 程式從 147 MB 瘦身到 59.5 MB

.NET 中發佈程式時有對組件進行裁剪的功能,但那個功能只能做靜態檢查。比如我們的專案使用了 A 組件,A 組件中的類別有 M1、M2 兩個方法,M1 方法中又呼叫了 B 組件的程式碼,M2 方法中呼叫了 C 組件的程式碼。如果我們的程式中只呼叫了 M1 方法,而沒有呼叫 M2 方法,那麼用 .NET 的裁剪是無法把沒有被呼叫的 M2 方法中的 C 組件裁剪掉的。

我的這個工具可以做執行階段檢查,會把在執行階段完全沒有被呼叫(會考慮到反射等動態機制)的組件刪除。.NET 中發佈程式的組件裁剪功能也不支援 WinForm、WPF 專案。

我的這個工具的實現原理並不複雜,但是我找了一圈都沒有找到類似軟體,所以就自己寫了一個。大家如果知道有這樣的工具,請告訴我,如果確認這是我的首創的話,我會把這個軟體完善(測試各種專案和 .NET 版本以及各個作業系統的相容性)後發佈並開源。

如果這個專案開源的話,我會發佈到我的自媒體,各位朋友可以關注我的嗶哩嗶哩、今日頭條、抖音、微博、油管等頻道,頻道名都是「楊中科」。

原文作者:楊中科

原文連結:https://mp.weixin.qq.com/s/B7QdVQWtgBKNKOEFj2Lg4g

繼續探索

延伸閱讀

更多文章