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

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

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

.NET Framework 4.7.2 は、Windows 10 April 2018 更新プログラムに含まれています。 このバージョンの .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 デスクトップ開発ワークロードのオプション コンポーネントとして使用できます。

.NET 4.6.2 開発ツールをインストールする

または、次の場所から .NET 開発者パックを取得することもできます。 https://www.microsoft.com/net/download/visual-studio-sdks

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

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

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

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

  1. ソリューションを右クリックし、[ Configuration Manager] を選択します。

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

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

x86 の構成

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

重要

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

NuGet パッケージを追加する

ネイティブ イメージ コンパイラは、実行可能ファイルを生成する Visual Studio プロジェクトに追加する必要がある NuGet パッケージとして提供されます。 これは通常、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 に設定することで、非リリース ビルドでネイティブ イメージのコンパイルをトリガーできます。

よくあるご質問

質問 新しいバイナリは、.NET Framework 4.7.2 のないマシンで動作しますか?

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

質問 フィードバックを提供したり、問題を報告したりするにはどうすればよいですか?

A。 Visual Studio のフィードバック ツールを使用して問題を報告します。 詳細

質問 ネイティブ イメージを既存のバイナリに追加した場合の影響は何ですか?

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

質問 このテクノロジを使用してバイナリをリリースできますか?

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