すべてのアセンブリを既定でトリミング

トリミングにより、コンソール アプリ内のすべてのアセンブリが既定でトリミングされるようになりました。 この変更は、PublishTrimmed=true で公開されているアプリにのみ影響し、既存のトリミング警告が発生したアプリのみが中断されます。 また、Windows デスクトップ、Android、iOS、WASM、または ASP.NET SDK を使用しないプレーンな .NET アプリにのみ影響します。

以前の動作

以前は、ライブラリ プロジェクト ファイルで <IsTrimmable>true</IsTrimmable> としてオプトインされたアセンブリのみがトリミングされていました。

新しい動作

.NET 7 以降では、トリミングによってアプリ内のすべてのアセンブリが既定でトリミングされます。 以前に PublishTrimmed で動作していた可能性があるアプリは、.NET 7 では機能しないことがあります。 ただし、影響を受けるのはトリミング警告が表示されたアプリのみです。 アプリにトリミングの警告が表示されない場合、動作の変更によって悪影響が生じることはなく、アプリのサイズが小さくなる場合があります。

アプリにトリミング警告が表示された場合は、動作や例外に変更が見られることがあります。 たとえば、ユーザー プロジェクトの型をシリアル化および逆シリアル化するためにソース生成なしで Newtonsoft.Json または System.Text.Json を使用するアプリは、変更前は機能していた可能性があります。これは、ユーザー プロジェクトの型が完全に保持されていたためです。 ただし、1 つ以上のトリミング警告 (警告コード ILxxxx) が存在していた可能性があります。 現在は、ユーザー プロジェクト内の型がトリミングされ、シリアル化が失敗したり、予期しない結果が生成されたりするおそれがあります。

導入されたバージョン

.NET 7

破壊的変更の種類

この変更はソースの互換性に影響を与える可能性があります。

変更理由

この変更は、ユーザーが明示的にオプトインしなくてもアプリのサイズを小さくするのに役立ち、特に明記されていない限りアプリ全体がトリミングされるというユーザーの期待に沿うものです。

最適な解決策は、アプリケーション内のすべてのトリミング警告を解決することです。 独自のライブラリの警告を解決する方法については、「トリミングの警告の概要」を参照してください。 他のライブラリについては、作成者にご連絡いただき、警告を解決するよう要求するか、トリミングが既にサポートされている別のライブラリを選択してください。 たとえば、Newtonsoft.Json の代わりに、トリミングをサポートする ソース生成を使用して System.Text.Json に切り替えることができます。

前の動作に戻すには、TrimMode プロパティを NET 7 より前の動作である partial に設定します。

<TrimMode>partial</TrimMode>

既定の .NET 7 以降の値は full です。

<TrimMode>full</TrimMode>

影響を受ける API

[なし] :

関連項目