ネイティブ イメージで .NET デスクトップ アプリを最適化します。Optimize your .NET Desktop apps with native images


一部の情報はリリース前の製品に関する事項であり、正式版がリリースされるまでに大幅に変更される可能性があります。Some information relates to pre-released product which may be substantially modified before it’s commercially released. 本書に記載された情報について、Microsoft は明示または黙示を問わずいかなる保証をするものでもありません。Microsoft makes no warranties, express or implied, with respect to the information provided here.

バイナリを事前コンパイルすることで、.NET Framework アプリケーションの起動時間を向上できます。You can improve the startup time of your .NET Framework application by pre-compiling your binaries. Microsoft Store を介して配布のパッケージ化とする大規模なアプリケーションでは、このテクノロジを使用できます。You can use this technology on large applications that you package and distribute through the Microsoft Store. 場合によっては、20% のパフォーマンスが向上が見しました。In some cases, we've observed a 20% performance improvement. このテクノロジに関する詳細については、の技術概要します。You can learn more about this technology in the technical overview.

としてネイティブ イメージのコンパイラのプレビュー バージョンをリリースしました、 NuGet パッケージします。We've released a preview version of the native image compiler as a NuGet package. このパッケージを適用するには、.NET Framework バージョン 4.6.2 を対象とする任意の .NET Framework アプリケーションまたはそれ以降。You can apply this package to any .NET Framework application that targets the .NET Framework version 4.6.2 or later. このパッケージは、アプリケーションで使用されるすべてのバイナリをネイティブ ペイロードを含む投稿ビルド ステップを追加します。This package adds a post build step that includes a native payload to all the binaries used by your application. この最適化されたペイロードは、以前のバージョンの MSIL コードはまだ読み込み中に .NET 4.7.2 以降をアプリケーションが実行時に読み込まれます。This optimized payload will be loaded when the application runs in .NET 4.7.2 and above while previous versions will still load the MSIL code.

.NET framework 4.7.2に含まれている、 Windows 10 April 2018 updateします。The .NET framework 4.7.2 is included in the Windows 10 April 2018 update. Windows 7 以降および Windows Server 2008 R2 以降を実行する PC で、このバージョンの .NET Framework をインストールすることもできます。You can also install this version of the .NET Framework on PC's that run Windows 7+ and Windows Server 2008 R2+.


Windows アプリケーション パッケージ プロジェクトでパッケージ化、アプリケーションのネイティブ イメージを生成する場合は、Windows Anniversary Update に、プロジェクトのターゲット プラットフォームの最小バージョンを設定することを確認してください。If you want to produce native images for your application packaged by the Windows Application Packaging project, make sure to set the Target Platform Minimum version of the project to the Windows Anniversary Update.

ネイティブ イメージを生成する方法How to produce native images

プロジェクトを構成する次の手順に従います。Follow these instructions to configure your projects.

  1. 4.6.2 またはの上に、ターゲット フレームワークを構成します。Configure the target framework as 4.6.2 or above

  2. ターゲット プラットフォームを x86 または x64 として構成します。Configure the target platform as x86 or x64

  3. NuGet パッケージを追加します。Add the NuGet packages.

  4. リリース ビルドを作成します。Create a Release Build.

4.6.2 またはの上に、ターゲット フレームワークを構成します。Configure the target framework as 4.6.2 or above

ターゲット .NET Framework 4.6.2 にプロジェクトを構成する必要があります、.NET Framework 4.6.2 開発ツールまたはそれ以降。To configure your project to target .NET Framework 4.6.2 you will need the .NET Framework 4.6.2 development tools or newer. これらのツールは、.NET デスクトップ開発ワークロードの下のオプション コンポーネントとして、Visual Studio インストーラーで使用できます。These tools are available through the Visual Studio installer as optional components under the .NET desktop development workload:

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

またはから .NET の開発者パックを取得できます。 https://www.microsoft.com/net/download/visual-studio-sdksAlternatively, you can get the .NET developer packs from: https://www.microsoft.com/net/download/visual-studio-sdks

ターゲット プラットフォームを x86 または x64 として構成します。Configure the target platform as x86 or x64

ネイティブ イメージのコンパイラでは、特定のプラットフォーム コードを最適化します。The native image compiler optimizes the code for a given platform. これを使用するには、x86 または x64 など特定の 1 つのプラットフォームを対象とするアプリケーションを構成する必要があります。To use it, you need to configure your application to target one specific platform such as x86 or x64.

ソリューション内に複数のプロジェクトがある場合のみエントリ ポイント プロジェクトは、(ほとんどの場合、実行可能ファイルを生成するプロジェクト) が x86 または x64 としてコンパイルします。If you have multiple projects in your solution, only the entry point project (most likely the project that produces an executable file) has to be compiled as x86 or x64. メイン プロジェクトから参照されているその他のバイナリは、AnyCPU としてコンパイルする場合でも、メインのプロジェクトで指定されたアーキテクチャと処理されます。Additional binaries referenced from the main project will be processed with the architecture specified in the main project, even if they are compiled as AnyCPU.

プロジェクトを構成するには。To configure your project:

  1. ソリューションを右クリックし、 Configuration Managerします。Right-click your solution, and then select Configuration Manager.

  2. 選択 < 新規作成.> で、プラットフォーム実行可能ファイルを生成するプロジェクトの名前の横にあるドロップダウン メニュー。Select <New ..> in the Platform dropdown menu beside the name of the project that produces your executable file.

  3. 新しいプロジェクト プラットフォーム ダイアログ ボックスに、必ず、設定のコピー元にドロップダウン リストが設定されているAny CPUIn the New Project Platform dialog box, make sure that the Copy Settings from dropdown list is set to Any CPU.

X86 を構成します。

この手順を繰り返しますRelease/x64x64 を生成する場合のバイナリです。Repeat this step for Release/x64 if you want produce x64 binaries.


ネイティブ イメージのコンパイラでは、AnyCPU 構成はサポートされていません。AnyCPU configuration is not supported by the native image compiler.

NuGet パッケージを追加します。Add the NuGet packages

ネイティブ イメージのコンパイラは、実行可能ファイルを生成する Visual Studio プロジェクトに追加する必要がある NuGet パッケージとして提供されます。The native image compiler is provided as a NuGet package that you need to add to the Visual Studio project that produces the executable file. これは、通常、Windows フォームまたは WPF プロジェクトです。This is typically your Windows Forms or WPF project. そのためには、次の PowerShell コマンドを使用します。Use this PowerShell command to do that.

PM> Install-Package Microsoft.DotNet.Framework.NativeImageCompiler -Version 0.0.1-prerelease-00002  -PRE


プレビュー パッケージは、一覧にないと、NuGet.org に発行されます。The preview packages are published in NuGet.org as unlisted. NuGet.org を参照して、または Visual Studio でパッケージ マネージャー UI を使用して、検出されません。You won’t find them by browsing NuGet.org or by using the Package Manager UI in Visual Studio. パッケージ マネージャー コンソールからインストールするただし、いつ別のコンピューターから復元します。However, you can install them from the Package Manager Console, and when you restoring from a different machine. しましょうパッケージは、完全にアクセスできるときに、最初の非プレビュー バージョンを公開します。We'll make the packages fully accessible when we publish the first non-preview version.

リリース ビルドを作成します。Create a Release Build

NuGet パッケージは、リリース ビルドの場合、追加のツールを実行するプロジェクトを構成します。The NuGet package configures the project to run an additional tool for release builds. このツールは、同じバイナリにネイティブ コードを追加します。This tool adds the native code to the same binaries. ツールのバイナリが処理されていることを確認するには、ビルドの出力など、この 1 つのメッセージを含めたを確認できます。To verify that the tool has processed the binaries you can review the build output to make sure it includes a message such as this one:

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


Q。新しいバイナリは .NET Framework 4.7.2 なしのマシンでは機能しますか。Q. Do the new binaries work on machines without .NET Framework 4.7.2?

A.A. .NET Framework 4.7.2 以降を実行しているときに、機能強化による最適化されたバイナリが得られます。Optimized binaries will benefit from the improvements when running with .NET Framework 4.7.2. .NET framework の以前のバージョンを実行しているクライアントでは、最適化されていない MSIL コードをバイナリから読み込みます。Clients that run previous .NET framework versions will load the non-optimized MSIL code from the binary.

Q。フィードバックを提供または問題を報告する方法は?Q. How can I provide feedback or report issues?

A.A. Visual Studio 2017 で、フィードバック ツールを使用して、問題を報告します。Report an issue by using the Feedback tool in Visual Studio 2017. 詳細についてはします。More information.

Q。既存のバイナリへのネイティブ イメージの追加の影響とは何ですか。Q. What’s the impact of adding the native image to existing binaries?

A.A. 最適化されたバイナリには、最終的なファイルが大きいため、マネージ コードとネイティブ コードが含まれます。The optimized binaries contain the managed and native code, making the final files greater.

Q。このテクノロジを使用してバイナリをリリースすることができますか。Q. Can I release binaries using this technology?

A.A. このバージョンには、現在使用できる、Go Live のライセンスが含まれています。This version includes a Go Live license that you can use today.