.Net IL Linker通過丟棄未使用的庫和引用來減少.Net應(yīng)用程序的占用空間,盡管它仍處于預(yù)覽階段
.Net的長期要求和長期未實(shí)現(xiàn)的功能終于由Microsoft和Mono團(tuán)隊(duì)提供:一個(gè)鏈接器,允許.Net應(yīng)用程序被刪除,以僅包括程序在運(yùn)行時(shí)實(shí)際使用的庫的部分, 監(jiān)控軟件, 遠(yuǎn)程控制。
IL Linker項(xiàng)目通過分析.Net應(yīng)用程序并確定哪些庫從未被該應(yīng)用程序調(diào)用。微軟在其GitHub公告中表示:“它實(shí)際上是應(yīng)用程序特定的死碼分析。
IL Linker的長期任務(wù)是使其成為“.Net生態(tài)系統(tǒng)的主要連接器”。
目前,IL Linker的預(yù)覽版本僅支持可能的.Net應(yīng)用程序的一小部分 - 那些獨(dú)立的應(yīng)用程序,并使用.Net Core。給定應(yīng)用程序節(jié)省多少空間會(huì)有很大差異,但微軟表示,“在簡單的情況下,鏈接器可以將應(yīng)用程序的大小減少50%!
由于平臺(tái)的動(dòng)態(tài)特性,歷史上很難減少.Net應(yīng)用程序。 IL Linker將從應(yīng)用程序中明確聲明的任何程序集或依賴關(guān)系開始搜索代碼,并標(biāo)記它確定為未使用的所有內(nèi)容。
現(xiàn)在,用于此標(biāo)記和掃描的算法謹(jǐn)慎注意,但是IL Linker仍然可以標(biāo)記在運(yùn)行時(shí)動(dòng)態(tài)導(dǎo)入的代碼。但是,最終用戶可以隨時(shí)手動(dòng)指定要保留的內(nèi)容,無論是整個(gè)程序集還是僅在該程序集中指定特定類型。
IL Linker的一些工作是基于早期的項(xiàng)目,Cecil,自2004年以來被.Net開發(fā)人員用來檢查和修改.Net應(yīng)用程序和庫。兩者之間的主要區(qū)別是,Cecil主要用于手動(dòng)檢查和修改,創(chuàng)建一個(gè)較小的應(yīng)用程序只是幾個(gè)可能的目標(biāo)之一。 IL Linker專為減少.Net應(yīng)用程序的占用而專門設(shè)計(jì)。