私は、.NETプログラムをスリム化するツールを開発しました。参照されているが使用されていないアセンブリを削除します。これを使って、ある.NET Coreプログラムを147MBから59.5MBにスリム化しました。

.NETでアプリケーションを発行する際にはアセンブリをトリミングする機能がありますが、これは静的チェックのみを行います。例えば、プロジェクトがアセンブリAを使用していて、A内のクラスにM1とM2の2つのメソッドがあり、M1がアセンブリBのコードを呼び出し、M2がアセンブリCのコードを呼び出しているとします。プログラムでM1のみを呼び出し、M2を呼び出さない場合、.NETのトリミングでは、呼び出されていないM2内で参照されているアセンブリCを削除できません。
私のツールは実行時チェックを行い、実行時にまったく呼び出されないアセンブリ(リフレクションなどの動的メカニズムも考慮)を削除します。また、.NETのアプリケーション発行時のアセンブリトリミング機能は、WinFormやWPFプロジェクトをサポートしていません。
私のツールの実装原理はそれほど複雑ではありませんが、同様のソフトウェアを探しても見つからなかったため、自作しました。もし同様のツールをご存知でしたら教えてください。これが私の独自開発であることが確認できれば、ソフトウェアを完成させ(さまざまなプロジェクトや.NETバージョン、各OSとの互換性をテスト)、公開してオープンソース化する予定です。
このプロジェクトをオープンソース化する場合は、私のメディアで公開します。私のBilibili、今日頭条、抖音、微博、YouTubeなどのチャンネルをフォローしてください。チャンネル名はすべて「杨中科」です。
原文著者:杨中科
原文リンク:https://mp.weixin.qq.com/s/B7QdVQWtgBKNKOEFj2Lg4g