次の方法で共有


.NET Native を使用してアプリをコンパイルする

.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 にアップロードします。