.NET ネイティブによるアプリのコンパイルCompiling Apps with .NET Native

.NET ネイティブは、Visual Studio 2015 と以降のバージョンに含まれているビルドと Windows アプリを展開するためのプリコンパイル テクノロジです。.NET Native is a precompilation technology for building and deploying Windows apps that is included with Visual Studio 2015 and later versions. マネージド コード (C# または Visual Basic) で記述された、.NET Framework および Windows 10 を対象とするアプリのリリース バージョンを自動的にネイティブ コードにコンパイルします。It automatically compiles the release version of apps that are written in managed code (C# or Visual Basic) and that target the .NET Framework and Windows 10 to native code.

通常、.NET Framework を対象とするアプリは中間言語 (IL) にコンパイルされます。Typically, apps that target the .NET Framework are compiled to intermediate language (IL). 実行時に、Just-In-Time (JIT) コンパイラによって IL がネイティブ コードに変換されます。At run time, the just-in-time (JIT) compiler translates the IL to native code. これに対し、.NET ネイティブのコンパイル、Windows アプリを直接ネイティブ コードにします。In contrast, .NET Native compiles Windows apps directly to native code. 開発者にとって、これは次のことを意味します。For developers, this means:

  • ネイティブ コードのパフォーマンスをアプリに機能します。Your apps feature the performance of native code. 通常、パフォーマンスは、まず IL にコンパイルされ、JIT コンパイラでネイティブ コードにコンパイルし、コードに優れたになります。Usually, performance will be superior to code that is first compiled to IL and then compiled to native code by the JIT compiler.

  • 引き続き C# または Visual Basic でプログラムを作成できます。You can continue to program in C# or Visual Basic.

  • クラス ライブラリ、自動メモリ管理とガベージ コレクション、例外処理など、.NET Framework で提供されるリソースを引き続き利用できます。You can continue to take advantage of the resources provided by the .NET Framework, including its class library, automatic memory management and garbage collection, and exception handling.

アプリのユーザーは、.NET ネイティブは、これらの利点を提供します。For users of your apps, .NET Native offers these advantages:

  • ほとんどのアプリやシナリオの実行時間が高速化します。Faster execution times for the majority of apps and scenarios.

  • アプリやシナリオの大半はスタートアップ時間が短くします。Faster startup times for the majority of apps and scenarios.

  • 配置と更新コストが低い。Low deployment and update costs.

  • アプリのメモリ使用量を最適化します。Optimized app memory usage.

重要

大半のアプリおよびシナリオでは、.NET ネイティブは提供が大幅に高速起動時間、または NGEN イメージに IL にコンパイルされたアプリと比較して優れたパフォーマンスを発揮します。For the vast majority of apps and scenarios, .NET Native offers significantly faster startup times and superior performance when compared to an app compiled to IL or to an NGEN image. ただし、結果は異なる場合があります。However, your results may vary. アプリが .NET ネイティブのパフォーマンス向上による恩恵を受けていることを確認するには、.NET ネイティブ以外のバージョンのアプリのパフォーマンスを比較する必要があります。To ensure that your app has benefited from the performance enhancements of .NET Native, you should compare its performance with that of the non-.NET Native version of your app. 詳細については、次を参照してください。パフォーマンス セッションの概要します。For more information, see Performance Session Overview.

.NET ネイティブは、複数のネイティブ コードにコンパイルします。But .NET Native involves more than a compilation to native code. .NET Framework アプリのビルド方法と実行方法が変更されます。It transforms the way that .NET Framework apps are built and executed. 特に次の点に注意してください。In particular:

  • プリコンパイル時に、.NET Framework の必要な部分がアプリに静的にリンクされます。During precompilation, required portions of the .NET Framework are statically linked into your app. これにより、アプリは .NET Framework のアプリ ローカルのライブラリを使用して実行でき、コンパイラはグローバル分析を実行してパフォーマンスを向上させることができます。This allows the app to run with app-local libraries of the .NET Framework, and the compiler to perform global analysis to deliver performance wins. その結果、.NET Framework の更新後であっても、アプリは常に高速に起動します。As a result, apps launch consistently faster even after .NET Framework updates.

  • .NET ネイティブ ランタイムでは、静的プリコンパイル用は最適化され、ほとんどの場合で、優れたパフォーマンスを提供します。The .NET Native runtime is optimized for static precompilation and in the vast majority of cases offers superior performance. 同時に、開発者に役立つ主要なリフレクション機能もあります。At the same time, it retains the core reflection features that developers find so productive.

  • .NET ネイティブと同じバックエンドを使用して、C++コンパイラは静的プリコンパイル シナリオ用に最適化されています。.NET Native uses the same back end as the C++ compiler, which is optimized for static precompilation scenarios.

.NET ネイティブはパフォーマンス上の利点を提供できますC++管理している開発者のコードと同じか類似のツールを使用しているためC++内部的に、この表に示すようにします。.NET Native is able to bring the performance benefits of C++ to managed code developers because it uses the same or similar tools as C++ under the hood, as shown in this table.

.NET Native.NET Native C++C++
ライブラリLibraries .NET Framework + Windows ランタイムThe .NET Framework + Windows Runtime Win32 + Windows ランタイムWin32 + Windows Runtime
コンパイラCompiler UTC 最適化コンパイラUTC optimizing compiler UTC 最適化コンパイラUTC optimizing compiler
配置Deployed 実行可能バイナリReady-to-run binaries 実行可能バイナリ (ASM)Ready-to-run binaries (ASM)
ランタイムRuntime MRT.dll (最小 CLR ランタイム)MRT.dll (Minimal CLR Runtime) CRT.dll (C ランタイム)CRT.dll (C Runtime)

Windows 10 用の Windows アプリの場合は、.NET ネイティブ コード コンパイル バイナリをアプリ パッケージ (.appx ファイル) に入れて Windows ストアにアップロードします。For Windows apps for Windows 10, you upload .NET Native Code Compilation binaries in app packages (.appx files) to the Windows Store.

このセクションの内容In This Section

.NET ネイティブ コード コンパイルを使用したアプリ開発の詳細については、次のトピックを参照してください。For more information about developing apps with .NET Native Code Compilation, see these topics: