NET Coreには未使用コードをトリミングする機能がありますが、静的解析を使用して実装されているため、最適なトリミングはありません。以下の2つの欠点がある。
Windows FormsやWPFはサポートされておらず、プログラムのカスタマイズ機能に対する最も強い需要はデスクトップアプリケーションの開発者です。
実行時に使用されなかったアセンブリは削除できません。例えば、プログラムはAアセンブリを使用し、AプログラムはBとCの両方のアセンブリを参照し、AアセンブリのM 1メソッドのみがBアセンブリを使用し、AアセンブリのM 2メソッドのみがCアセンブリを使用します。このプログラムでは、AのM 1メソッドのみが呼び出され、AのM 2メソッドは呼び出されません。Cアセンブリは呼び出されませんが、未使用コードをクリップする機能は静的参照チェックのみを行うため、Cアセンブリはまだクリップされません。
反射をうまくサポートできない。静的解析を使用して実装されているため、リフレクションによって実行時にロードされるアセンブリをカットすることができます。
因此我开发了一个用来对.NET Core 程序进行瘦身的应用程序,它则可以解决上面提到的.NET Core 的【剪裁未使用的代码】问题,它支持Windows Forms和WPF ,它会在运行时分析程序加载的程序集,从而得知哪些程序集没有被使用,因此它不仅 能删掉更多没有被使用的程序集,而且能天然地 支持反射 。
プログラムカット効果の比較:
| オリジナルサイズ。 | NET組み込みクリッピング | Zack.DotNetTrimmer | |
|---|---|---|---|
| 空のCore MVCプロジェクト | 97MB | 50.3MB | 43.6MB |
| 空のWebAPIプロジェクト | 93MB | 46.3MB | 34.5 MB |
| 空のWPFプロジェクト | 152 MB | サポートなし。 | 75.2 MB |
| 空のWinFormsプロジェクト | 152 MB | サポートなし。 | 50.0 MB |