ネイティブ イメージを使って .NET デスクトップ アプリを最適化する

バイナリをプリコンパイルすることにより、.NET Framework アプリケーションの起動時間を短縮できます。 このテクノロジは、パッケージ化して Microsoft Store で配布する大規模なアプリケーションで使用できます。 場合によっては、20% のパフォーマンス向上が観測されています。 このテクノロジの詳細については、技術概要を参照してください。

ネイティブ イメージ コンパイラは NuGet パッケージとしてリリースされています。 このパッケージは、.NET Framework バージョン 4.6.2 以降をターゲットとする任意の .NET Framework アプリケーションに適用できます。 このパッケージにより、ネイティブ ペイロードを含むビルド後のステップが、アプリケーションで使用されるすべてのバイナリに追加されます。 この最適化されたペイロードは、アプリケーションが .NET 4.7.2 以降で実行される場合に読み込まれますが、以前のバージョンでは引き続き MSIL コードが読み込まれます。

.NET Framework 4.7.2Windows 10 April 2018 Update に含まれています。 このバージョンの .NET Framework は、Windows 7 以降および Windows Server 2008 R2 以降を稼働している PC にインストールすることもできます。

重要

Windows アプリケーション パッケージ プロジェクトによってパッケージ化されたアプリケーションのネイティブ イメージを生成する場合は、プロジェクトのターゲット プラットフォームの最小バージョンを Windows Anniversary Update に設定してください。

ネイティブ イメージを生成する方法

以下の手順に従ってプロジェクトを構成します。

  1. ターゲット フレームワークを 4.6.2 以上として構成する

  2. ターゲット プラットフォームを x86 または x64 として構成する

  3. NuGet パッケージを追加する。

  4. リリース ビルドを作成する。

ターゲット フレームワークを 4.6.2 以上として構成する

.NET Framework 4.6.2 をターゲットとするようにプロジェクトを構成するには、.NET Framework 4.6.2 以降の開発ツールが必要です。 これらのツールは、Visual Studio インストーラーを使用して、.NET デスクトップ開発ワークロードのオプション コンポーネントとして入手できます。

Install .NET 4.6.2 development tools

または、.NET 開発者用パックを次から入手することもできます: https://www.microsoft.com/net/download/visual-studio-sdks

ターゲット プラットフォームを x86 または x64 として構成する

ネイティブ イメージ コンパイラでは、特定のプラットフォームに向けてコードが最適化されます。 これを使用するには、x86 や x64 などの 1 つの特定のプラットフォームをターゲットとするようにアプリケーションを構成する必要があります。

ソリューション内に複数のプロジェクトがある場合は、エントリ ポイント プロジェクト (ほとんどの場合は実行可能ファイルを生成するプロジェクト) のみを x86 または x64 としてコンパイルする必要があります。 メイン プロジェクトから参照されるその他のバイナリは、AnyCPU としてコンパイルされている場合でも、メイン プロジェクトで指定されたアーキテクチャで処理されます。

プロジェクトを構成するには:

  1. ソリューションを右クリックし、[構成マネージャー] を選択します。

  2. 実行可能ファイルを生成するプロジェクトの名前の横にある [プラットフォーム] ドロップダウン メニューの [<新規作成...>] を選択します。

  3. [新しいプロジェクト プラットフォーム] ダイアログ ボックスで、[設定のコピー元] ドロップダウン リストが [任意の CPU] に設定されていることを確認します。

Configure x86

x64 バイナリを生成する場合は、Release/x64 に対してこの手順を繰り返します。

重要

AnyCPU 構成は、ネイティブ イメージ コンパイラではサポートされていません。

NuGet パッケージを追加する

ネイティブ イメージ コンパイラは、NuGet パッケージとして提供されます。これは、実行可能ファイルを生成する Visual Studio プロジェクトに追加する必要があります。 これは通常、Windows フォームまたは WPF プロジェクトです。 これを行うには、次の PowerShell コマンドを使用します。

PM> Install-Package Microsoft.DotNet.Framework.NativeImageCompiler -Version 1.0.0

リリース ビルドを作成する

この NuGet パッケージによって、リリース ビルド用の追加ツールを実行するようにプロジェクトが構成されます。 このツールにより、同じバイナリにネイティブ コードが追加されます。 ツールによってバイナリが処理されたことを確認するには、ビルド出力を確認して、次のようなメッセージが含まれていることを確かめます。

Native image obj\x86\Release\\R2R\DesktopApp1.exe generated successfully.

ネイティブ イメージのコンパイルは、リリース以外のビルドでもトリガーすることができます。それには、プロジェクト ファイルでプロパティ NgenR2Rtrue に設定します。

よく寄せられる質問

Q. 新しいバイナリは .NET Framework 4.7.2 のないコンピューター上で動作しますか。

A. 最適化されたバイナリは、.NET Framework 4.7.2 を使用して実行された場合にその機能強化の恩恵を受けます。 以前のバージョンの .NET Framework を実行しているクライアントでは、バイナリから最適化されていない MSIL コードが読み込まれます。

Q. フィードバックを送信したり問題を報告したりするには、どうすればよいですか。

A. 問題を報告するには、Visual Studio のフィードバック ツールをご使用ください。 詳細については、こちらを参照してください。

Q. 既存のバイナリにネイティブ イメージを追加すると、どのような影響がありますか。

A. 最適化されたバイナリにはマネージド コードとネイティブ コードが含まれるため、最終的なファイルが大きくなります。

Q. このテクノロジを使用してバイナリをリリースすることはできますか。

A. このバージョンには、すぐに使用できる Go Live ライセンスが含まれています。