.NET Native は、UWP アプリをビルドして展開するためのプリコンパイル テクノロジです。 .NET Native は、Visual Studio 2015 以降のバージョンに含まれています。 マネージド コード (C# または Visual Basic) で記述された UWP アプリのリリース バージョンがネイティブ コードに自動的にコンパイルされます。
通常、.NET アプリは中間言語 (IL) にコンパイルされます。 実行時に、Just-In-Time (JIT) コンパイラは IL をネイティブ コードに変換します。 これに対し、.NET ネイティブでは、UWP アプリがネイティブ コードに直接コンパイルされます。 開発者の場合、これは次のことを意味します。
アプリはネイティブ コードのパフォーマンスを備えています。 通常、パフォーマンスは、最初に IL にコンパイルされた後、JIT コンパイラによってネイティブ コードにコンパイルされるコードよりも優れています。
C# または Visual Basic でプログラムを続行できます。
クラス ライブラリ、メモリの自動管理とガベージ コレクション、例外処理など、.NET Framework によって提供されるリソースを引き続き利用できます。
アプリのユーザーに対して、.NET Native には次の利点があります。
ほとんどのアプリとシナリオで実行時間が短縮されます。
ほとんどのアプリとシナリオで起動時間が短縮されます。
デプロイと更新のコストが低い。
アプリのメモリ使用量を最適化しました。
ただし、.NET Native には、ネイティブ コードへのコンパイル以上のものがあります。 .NET Framework アプリのビルド方法と実行方法が変換されます。 具体的には次のとおりです。
プリコンパイル時に、.NET Framework の必要な部分がアプリに静的にリンクされます。 これにより、アプリを .NET Framework のアプリ ローカル ライブラリで実行し、コンパイラでグローバル分析を実行してパフォーマンスを向上させることができます。 その結果、.NET Framework の更新後もアプリの起動が一貫して速くなります。
.NET ネイティブ ランタイムは静的プリコンパイル用に最適化されており、ほとんどの場合、優れたパフォーマンスを提供します。 同時に、開発者にとって生産性が高いとされるコア リフレクション機能を維持しています。
.NET Native は、静的プリコンパイル シナリオ用に最適化された C++ コンパイラと同じバックエンドを使用します。
.NET Native は、次の表に示すように、C++ と同じまたは同様のツールを内部で使用するため、C++ のパフォーマンス上の利点をマネージド コード開発者にもたらすことができます。
コンポーネント | .NET Native(.NET ネイティブ) | C++ |
---|---|---|
ライブラリ | .NET Framework + Windows ランタイム | Win32 + Windows ランタイム |
コンパイラ | UTC 最適化コンパイラ | UTC 最適化コンパイラ |
配置済み | すぐに実行できるバイナリ | すぐに実行できるバイナリ (ASM) |
ランタイム | MRT.dll (最小 CLR ランタイム) | CRT.dll (C ランタイム) |
UWP アプリの場合は、アプリ パッケージ (.msix または .appx ファイル) の .NET ネイティブ コード コンパイル バイナリを Microsoft Store にアップロードします。