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

Important

.NET とネイティブ AOT で UWP アプリを最新化する: 新しい UWP アプリを開発する場合や既存の UWP アプリを最新化したい場合には、.NET Native ではなく、最新の .NET とネイティブ AOT をサポートする UWP を使用することをお勧めします。 モダン .NET の UWP サポートが一般公開され、C# UWP アプリの既定のプロジェクトの種類として Visual Studio 2026 で使用されるのは です。 これにより、最新の.NETと C# の機能、ツールとデバッグのサポートの強化、ビルド時間の短縮にアクセスできます。 .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には、ネイティブ コードへのコンパイル以上のものがあります。 .NET Framework アプリのビルドと実行方法が変換されます。 具体的には次のとおりです。

  • プリコンパイル時に、.NET Framework の必要な部分がアプリに静的にリンクされます。 これにより、アプリは .NET Framework のアプリ ローカル ライブラリで実行でき、コンパイラはグローバル分析を実行してパフォーマンスを向上させることができます。 その結果、.NET Framework の更新後もアプリの起動が一貫して速くなります。

  • .NET ネイティブ ランタイムは静的プリコンパイル用に最適化されており、ほとんどの場合、優れたパフォーマンスを提供します。 同時に、開発者にとって生産性が高いとされるコア リフレクション機能を維持しています。

  • .NET Native は、静的プリコンパイル シナリオ用に最適化された C++ コンパイラと同じバックエンドを使用します。

.NETネイティブは、次の表に示すように、C++ と同じまたは同様のツールを内部で使用するため、マネージド コード開発者に C++ のパフォーマンス上の利点をもたらします。

コンポーネント .NET ネイティブ C++
ライブラリ .NET Framework + Windows ランタイム Win32 + Windows ランタイム
コンパイラ UTC 最適化コンパイラ UTC 最適化コンパイラ
配置済み すぐに実行できるバイナリ すぐに実行できるバイナリ (ASM)
ランタイム MRT.dll (最小 CLR ランタイム) CRT.dll (C ランタイム)

UWP アプリの場合は、アプリ パッケージ (.msix または .appx ファイル) のネイティブ コード コンパイル バイナリ.NET Microsoft Storeにアップロードします。