Share via


ネイティブ イメージ サービス

ネイティブ イメージ サービスとは、ネイティブ イメージを生成および保持する Windows サービスです。 ネイティブ イメージ サービスによって、開発者はコンピューターがアイドル状態になるまでネイティブ イメージのインストールとアップデートを遅延できます。

通常ネイティブ イメージ サービスは、アプリケーションまたはアップデートのインストール プログラム (インストーラー) によって開始されます。 優先順位 3 のアクションでは、サービスはコンピューターのアイドル時間に実行します。 このサービスは自身の状態を保存するため、再起動を繰り返しても必要に応じて続けて実行できます。 複数のイメージ コンパイルをキューに配置できます。

このサービスは、手動の Ngen.exe コマンドともやり取りします。 手動で実行するコマンドは、バックグラウンド アクティビティより優先されます。

メモメモ

Windows Vista では、ネイティブ イメージ サービスに表示される名前は "Microsoft.NET Framework NGEN v2.0.50727_X86" または "Microsoft.NET Framework NGEN v2.0.50727_X64" です。これより前のすべてのバージョンの Microsoft Windows では、名前は ".NET Runtime Optimization Service v2.0.50727_X86" または ".NET Runtime Optimization Service v2.0.50727_X64" です。

遅延操作の起動

インストールまたはアップグレードを開始する前に、サービスを停止する必要があります。 これによって、インストーラーがファイルをコピーするか、またはアセンブリをグローバル アセンブリ キャッシュに格納している間にサービスが実行されないようにできます。 次の Ngen.exe のコマンド ラインによって、サービスを停止します。

ngen queue pause

すべての遅延操作がキューに置かれた後に、次のコマンドによってサービスを再開します。

ngen queue continue

新しいアプリケーションをインストールする場合または共有コンポーネントを更新する場合にネイティブ イメージの生成を遅延するには、install アクションまたは update アクションで /queue オプションを使用します。 次の Ngen.exe のコマンド ラインは、共有コンポーネントのネイティブ イメージをインストールし、影響を受けるすべてのルートのアップデートを実行します。

ngen install MyComponent /queue
ngen update /queue

update アクションは、MyComponent を使用するネイティブ イメージだけでなく、無効になったすべてのネイティブ イメージを再作成します。

多くのルートで構成されるアプリケーションでは、遅延されたアクションの優先順位を指定できます。 次のコマンドは、次の 3 つのルートのインストールをキューに置きます。 Assembly1 がアイドル時間まで待たずに最初にインストールされます。 Assembly2 もアイドル時間まで待たずにインストールされますが、優先順位 1 のアクションがすべてインストールされた後にインストールされます。 Assembly3 は、コンピューターがアイドル状態になったことをサービスが検出するとインストールされます。

ngen install Assembly1 /queue:1
ngen install Assembly2 /queue:2
ngen install Assembly3 /queue:3

executeQueuedItems アクションを使用すると、キューに置かれているアクションを同時に強制的に実行できます。 オプションの優先順位を指定すると、このアクションは同等またはそれ以下の優先順位を持っているキュー内のアクションだけに適用されます。 既定の優先順位は 3 のため、次の Ngen.exe コマンドは、キューに置かれているすべてのアクションを即座に処理し、その処理が完了するまで戻りません。

ngen executeQueuedItems

Ngen.exe は同期コマンドを実行し、ネイティブ イメージ サービスは使用しません。 ネイティブ イメージ サービスの実行中に Ngen.exe を使用してアクションを実行できます。

サービスの停止

/queue オプションを指定した Ngen.exe コマンドの実行によって開始されたサービスは、すべてのアクションが完了するまでバックグラウンドで実行されます。 このサービスは自身の状態を保存するため、再起動を繰り返しても必要に応じて処理を継続できます。 キューに待機しているアクションがないことを検出したサービスは、次回コンピューターが再起動されたときに再起動されないように、自身の状態をリセットして停止します。

サービスとクライアントとのやり取り

.NET Framework Version 2.0 では、必ず Ngen.exe というコマンド ライン ツールを使用してネイティブ イメージ サービスとやり取りします。 インストール スクリプトでコマンド ライン ツールを使用してネイティブ イメージ サービスのアクションをキューに置いてサービスとやり取りします。

参照

参照

Ngen.exe (ネイティブ イメージ ジェネレーター)

Visual Studio と Windows SDK のコマンド プロンプト