Dot-Net
“刪除未使用的引用”的目的是什麼
我已經讀過刪除未使用的引用對編譯器沒有任何影響,因為它忽略了程式碼本身沒有引用的程序集。
但我很難相信,因為那樣的話,刪除未使用的引用的真正目的是什麼?它對生成的程序集的大小或其他方面沒有任何明顯的影響。或者這種智能行為是否僅限於 C# 編譯器 (csc.exe) 而不是 vbc.exe 所固有的?
如果此功能如此無用,為什麼ReSharper將其作為一項功能提供?為什麼在 Visual Studio 項目配置對話框中提供它?
我能想到的唯一有用的活動是在部署期間。安裝程序仍會複製參考(使用過的或未使用過的)。但是對於駐留在 GAC 中的程序集(例如,BCL 程序集),這也不是問題。
它防止 CLR 在執行時載入引用的模組。這將減少啟動時間(因為載入每個模組需要時間)。根據模組的大小,它可能會顯著減少啟動時間。
對此進行測試的一種方法是創建一個測試 WinForms 項目,添加對未使用的程序集(例如 System.Web)的引用,然後執行並附加到執行檔(例如 F5)。查看載入的模組(調試 -> Windows -> 模組),您將看到引用的程序集已載入。
如果您考慮一下,CLR 將很難確定是否真的使用了依賴項(一旦添加了對它的引用,它就在清單中作為依賴項)……尤其是因為執行了一些程式碼路徑無法提前知道…