自己完結型の展開と実行可能ファイルのトリミング

フレームワークに依存するデプロイ モデルは、.NET の開始以降に最も一般的となったデプロイ モデルです。 このシナリオでは、アプリケーション開発者は、.NET ランタイムおよびランタイム ライブラリがクライアント コンピューターで利用できることを見込んで、アプリケーションとサードパーティのアセンブリのみをバンドルします。 このデプロイ モデルは最新の .NET リリースでも引き続き主に使用されますが、フレームワークに依存するモデルが最善の選択ではないシナリオもあります。 別の方法としては、自己完結型アプリケーションを発行します。この場合、.NET ランタイムとランタイム ライブラリは、アプリケーションとサードパーティのアセンブリと共にバンドルされます。

トリミング自己完結型のデプロイ モデルは、展開のサイズを小さくするために最適化された、自己完結型のデプロイ モデルの特殊なバージョンです。 展開のサイズを最小限に抑えることは、Blazor アプリケーションなどの一部のクライアント側のシナリオでは重要な要件です。 アプリケーションの複雑さによっては、アプリケーションを実行するために、フレームワーク アセンブリのサブセットのみが参照され、各アセンブリ内のコードのサブセットのみが必要となります。 ライブラリの未使用部分は不要であり、パッケージ化されたアプリケーションから削除することができます。

ただし、アプリケーションのビルド時分析によってランタイム エラーが発生しうるというリスクがあります。これは、問題のあるさまざまなコード パターンを確実に分析できないためです (ほとんどの場合、リフレクション使用が中心となります)。 これらの問題を軽減するために、トリマーでコード パターンを完全に分析できない場合は常に警告が生成されます。 トリミング警告の意味と解決方法については、「トリミング警告の概要」を参照してください。

注意

  • トリミングは、.NET 6 以降のバージョンで完全にサポートされます。 .NET Core 3.1 および .NET 5.0 では、トリミングは実験的な機能です。
  • トリミングは、自己完結型で公開されるアプリケーション "のみ" で使用できます。

トリミングの問題の原因になるコンポーネント

警告

すべてのプロジェクトの種類をトリミングできるわけではありません。 詳細については、「既知のトリミングの非互換性」を参照してください。

ビルド時の分析の課題を引き起こすコードは、トリミングに適していません。 アプリケーションで使用すると問題になる一般的なコーディング パターンの一部は、バインドされないリフレクションの使用や、ビルド時に表示されない外部の依存関係に由来します。 バインドされないリフレクションの例は、XML シリアル化などのレガシ シリアライザーです。表示されない外部依存関係の例は、組み込みの COM です。 アプリケーションのトリミング警告に対処するには、「トリミング警告の概要」を参照してください。また、ライブラリをトリミングと互換性があるものにする方法については、「トリミング用に .NET ライブラリを準備する」を参照してください。

トリミングを有効にする

  1. お使いのプロジェクト ファイルに <PublishTrimmed>true</PublishTrimmed> を追加します。

    このプロパティにより、自己完結型の公開でトリミングされたアプリが生成されます。 また、トリミングと互換性のない機能がオフにされ、ビルド時にトリムの互換性に関する警告が表示されます。

    <PropertyGroup>
        <PublishTrimmed>true</PublishTrimmed>
    </PropertyGroup>
    
  2. 次に、dotnet publish コマンドまたは Visual Studio を使用してアプリを発行します。

CLI を使用した発行

次の例では、Windows 用のアプリがトリミングされた自己完結型のアプリケーションとして発行されます。

dotnet publish -r win-x64

トリミングは自己完結型のアプリでのみサポートされています。

<PublishTrimmed> は、dotnet build 中にトリミングと互換性のない機能が無効になるように、プロジェクト ファイルで設定する必要があります。 ただし、次のように、このオプションを引数として dotnet publish に設定することもできます。

dotnet publish -r win-x64 -p:PublishTrimmed=true

詳細については、.NET CLI を使用した .NET アプリの発行に関する記事を参照してください。

Visual Studio での公開

  1. [ソリューション エクスプローラー] で、公開するプロジェクトを右クリックし、[公開] を選択します。

    Solution Explorer with a right-click menu highlighting the Publish option.

    発行プロファイルがまだない場合は、指示に従って作成し、ターゲットの種類として [フォルダー] を選択します。

  2. [その他のアクション]>[編集] の順に選択します。

    Visual studio publish profile with edit button.

  3. [プロファイル設定] ダイアログで、次のオプションを設定します。

    • [配置モード][自己完結] に設定します。
    • [ターゲット ランタイム] を発行先のプラットフォームに設定します。
    • [未使用コードのトリミング] を選択します。

    [保存] を選択して設定を保存し、 [発行] ダイアログに戻ります。

    Profile settings dialog with deployment mode, target runtime, and trim unused assemblies options highlighted.

  4. [発行] を選択してトリミングされたアプリを発行します。

詳細については、Visual Studio を使用した .NET Core アプリの発行に関するページを参照してください。

Visual Studio for Mac での公開

Visual Studio for Mac には、アプリを発行するためのオプションがありません。 「CLI を使用した発行」セクションの手順に従って、手動で発行する必要があります。 詳細については、.NET CLI を使用した .NET アプリの発行に関する記事を参照してください。

関連項目