ネイティブ イメージ ジェネレータ (Ngen.exe) は、マネージ アプリケーションのパフォーマンスを向上するツールです。Ngen.exe は、コンパイルされたプロセッサ固有のマシン コードを含むファイルであるネイティブ イメージを作成してローカル コンピュータのネイティブ イメージ キャッシュにインストールします。ランタイムは、JIT (Just-In-Time) コンパイラを使用してオリジナルのアセンブリをコンパイルする代わりに、キャッシュにあるネイティブ イメージを使用できます。
.NET Framework Version 2.0 では、Ngen.exe が大幅に変更されました。
-
アセンブリと共にその依存関係もインストールされることで、Ngen.exe の構文が簡略化されました。
-
ネイティブ イメージをアプリケーション ドメイン間で共有できるようになりました。
-
新しいアクションの update は、無効になっていたイメージを再作成します。
-
アクションの実行は、コンピュータのアイドル時間を使用してイメージを生成してインストールするサービスによって遅らせることができます。
-
イメージを無効化する原因の一部が解決されました。
Ngen.exe とネイティブ イメージ サービスの使用の追加情報については、「ネイティブ イメージ サービス」を参照してください。
ngen <action> [options]
ngen /? | /help
各アクションの構文を示す表を次に示します。actionArguments の各部分の説明については、引数、シナリオおよび Config の各表を参照してください。オプション表は、options およびヘルプ スイッチの説明を示します。
|
アクション
|
説明
|
| install [assemblyName | assemblyPath] [scenarios] [config] [/queue[:{1|2|3}]] | アセンブリおよびそれに依存する項目のネイティブ イメージを生成してネイティブ イメージ キャッシュにインストールします。 /queue を指定すると、アクションはネイティブ イメージ サービスのキューに置かれます。既定の優先順位は 3 です。 |
| uninstall [assemblyName | assemblyPath | *] [scenarios] [config] | アセンブリのネイティブ イメージとその依存関係をネイティブ イメージ キャッシュから削除します。 単一のイメージとその依存関係をアンインストールするには、そのイメージをインストールしたときと同じコマンド ライン引数を使用します。 |
| update [/queue] | 無効になったネイティブ イメージを更新します。 /queue を指定すると、更新はネイティブ イメージ サービスのキューに置かれます。更新は常に優先順位 3 でスケジュールされるため、コンピュータがアイドル状態のときに実行されます。 |
| display [assemblyName | assemblyPath] | アセンブリのネイティブ イメージとその依存関係の状態を表示します。 引数を指定しなければ、ネイティブ イメージ キャッシュのすべての内容が表示されます。 |
| executeQueuedItems [1|2|3] | キューに置かれているコンパイル ジョブを実行します。 優先順位を指定すると、優先順位が高いかまたは同じコンパイル ジョブが実行されます。優先順位を指定しなければ、キューに置かれているすべてのコンパイル ジョブが実行されます。 |
| queue {pause | continue | status} | ネイティブ イメージ サービスを一時停止するか、停止しているサービスを再開するか、またはサービスの状態を照会します。 |
|
引数
|
説明
|
| assemblyName | アセンブリの名前。アセンブリ名は、myAssembly などのように部分的に指定するか、または myAssembly, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0038abc9deabfle5 などのように完全な表示名を指定できます。 Ngen.exe の各コマンド ラインに指定できるアセンブリは 1 つだけです。 |
| assemblyPath | アセンブリの明示的なパスを返します。フル パスまたは相対パスを指定できます。 パスを指定せずにファイル名を指定する場合、アセンブリは現在のディレクトリに存在する必要があります。 Ngen.exe の各コマンド ラインに指定できるアセンブリは 1 つだけです。 |
|
シナリオ
|
説明
|
| /Debug | デバッガで使用できるネイティブ イメージを生成します。 |
| /Profile | プロファイラで使用できるネイティブ イメージを生成します。 |
| /NoDependencies | 指定されたシナリオのオプションに必要なネイティブ イメージの最小数を生成します。 |
|
構成
|
説明
|
| /ExeConfig: exePath | 指定された実行可能アセンブリの構成を使用します。 Ngen.exe は、依存関係にバインドする際に、ローダーと同じ決定をする必要があります。Load メソッドを使用して共有コンポーネントが実行時に読み込まれると、読み込まれた依存関係のバージョンなどの共有コンポーネント用に読み込まれた依存関係はアプリケーションの構成ファイルによって決定されます。/ExeConfig スイッチは、実行時にどの依存関係を読み込むかに関するガイダンスを Ngen.exe に提供します。 |
| /AppBase: directoryPath | 依存関係を検索するときは、アプリケーション ベースに指定されているディレクトリを使用します。 |
|
オプション
|
説明
|
| /nologo | Microsoft 著作権情報を表示しません。 |
| /silent | 成功メッセージを表示しません。 |
| /verbose | デバッグの詳細情報を表示します。 メモ |
|---|
| オペレーティング システムの制限により、Windows 98 と Windows Millennium Edition では追加情報は表示されません。 |
|
| /help, /? | 現在のリリースのコマンド構文とオプションを表示します。 |
Ngen.exe を実行するには、管理者特権が必要です。
Ngen.exe は、指定されたアセンブリおよびそのすべての依存項目のネイティブ イメージを生成します。依存関係は、アセンブリ マニフェストを参照して決定されます。依存関係を別個にインストールする必要があるのは、アプリケーションがリフレクションを使用して依存関係を読み込む場合だけです。たとえば System.Reflection.Assembly.Load メソッドを呼び出して依存関係を読み込む場合などです。
Ngen.exe は依存関係のカウントを保持します。たとえば、MyAssembly.exe と YourAssembly.exe がネイティブ イメージ キャッシュにインストールされており、この両方とも OurDependency.dll を参照するとします。MyAssembly.exe がアンインストールされても、OurDependency.dll はアンインストールされません。これが削除されるのは、YourAssembly.exe もアンインストールされた場合だけです。
アセンブリのネイティブ イメージをグローバル アセンブリ キャッシュに生成している場合は表示名を指定します。System.Reflection.Assembly.FullName を参照してください。
Ngen.exe が生成するネイティブ イメージは、アプリケーション ドメイン間で共有できます。つまり、アプリケーション ドメイン間でアセンブリを共有する必要のあるアプリケーション シナリオでは Ngen.exe を使用できます。ドメイン中立性は、次の手順で指定します。
複数のアプリケーション ドメインに同じアセンブリを読み込むときは、必ずドメイン中立のコードを使用します。共有ドメインに読み込んだ後に非共有アプリケーション ドメインに読み込んだネイティブ イメージは使用できません。
メモ |
|---|
| ドメイン中立コードはアンロードできません。また、特に静的メンバにアクセスする際にパフォーマンスがわずかに低下します。 |
アセンブリのネイティブ イメージが生成された後でそのアセンブリを実行する場合、ランタイムは、常にこのネイティブ イメージを自動的に検索して使用しようとします。使用シナリオによっては、複数のイメージを生成できます。
たとえば、デバッグまたはプロファイルの目的でアセンブリを実行する場合、ランタイムは、/Debug または /Profile の各オプションを指定して生成されたネイティブ イメージを検索します。一致するネイティブ イメージが見つからない場合、ランタイムは標準の JIT コンパイルに戻ります。ネイティブ イメージをデバッグする唯一の方法は、/Debug オプションを使用してネイティブ イメージを作成することです。
uninstall アクションもシナリオを認識するため、すべてのシナリオまたは指定したシナリオだけをアンインストールできます。
ネイティブ イメージによって、メモリ使用の改善と起動時間の短縮の 2 つの領域においてパフォーマンスが向上します。
メモ |
|---|
| ネイティブ イメージのパフォーマンスは、コード、データ アクセス パターン、モジュール境界を超える呼び出しの数、他のアプリケーションによって既に読み込まれている依存関係の数などの多くの要素に依存するため分析が困難です。ネイティブ イメージがアプリケーションの利益になるかどうかを確認する唯一の方法は、主な配置シナリオにおいて慎重にパフォーマンスを測定することです。 |
メモリ使用の改善
プロセス間でコードを共有する場合は、ネイティブ イメージによってメモリ使用を大いに改善できます。ネイティブ イメージは Windows PE ファイルのため、.dll ファイルの単一のコピーを複数のプロセスで共有できます。これに対して、JIT コンパイラが生成するネイティブ コードは、プライベート メモリに格納されるため共有できません。
ターミナル サービスで実行されるアプリケーションも、共有されたコード ページの恩恵を受けることができます。
さらに、JIT コンパイラを読み込まないため、各アプリケーション インスタンスが使用する固定メモリの量も減らすことができます。
アプリケーションの起動の高速化
Ngen.exe によってアセンブリをプリコンパイルすることにより、一部のアプリケーションの起動時間が短縮されます。一般に、最初のアプリケーションが起動されると、その後のアプリケーションが使用する共有コンポーネントが読み込まれるため、アプリケーションがコンポーネント アセンブリを共有している場合にアプリケーションの起動時間が短縮されます。アプリケーションのすべてのアセンブリをハード ディスクから読み込む必要があるコールド スタートでは、ハード ディスクのアクセス時間の影響の方が大きいため、ネイティブ イメージから受け取る恩恵はそれほど大きくありません。
メイン アプリケーション アセンブリにハード バインディングされているすべてのイメージは同時に読み込む必要があるため、ハード バインディングは起動時間に影響します。
メモ |
|---|
| 厳密な名前が付いている共有コンポーネントがある場合は、それをグローバル アセンブリ キャッシュに置きます。ローダーは厳密な名前が付いているアセンブリに対してグローバル アセンブリ キャッシュには実行されない余分な検証を実行するため、ネイティブ イメージを使用することによって得られる起動時間の短縮の恩恵を受けることができません。 |
アセンブリのベース アドレスの重要性
ネイティブ イメージは Windows PE ファイルのため、他の実行可能ファイルと同様に再ベースの問題があります。ハード バインディングを使用する場合、再配置のパフォーマンス コストはさらに増大します。
ネイティブ イメージにベース アドレスを設定するには、コンパイラの適切なオプションを使用してアセンブリのベース アドレスを設定します。Ngen.exe は、このベース アドレスをネイティブ イメージに使用します。
メモ |
|---|
| ネイティブ イメージは、元になるマネージ アセンブリより大きくなります。ベース アドレスは、この大きなサイズを考慮して算出する必要があります。 |
dumpbin.exe などのツールを使用すると、ネイティブ イメージの推奨ベース アドレスを表示できます。
使用における考慮事項のまとめ
次の一般的な考慮事項とアプリケーションの考慮事項は、アプリケーションにネイティブ イメージを使用するかどうかを評価する際に役立ちます。
-
ネイティブ イメージでは、JIT コンパイル、タイプ セーフ検証などの多くの起動時アクティビティが不要なため、MSIL より読み込みが高速になります。
-
ネイティブ イメージでは JIT コンパイラが不要なため、必要な初期作業セットが少なくてすみます。
-
ネイティブ イメージによって、プロセス間でコードを共有できます。
-
ネイティブ イメージは MSIL アセンブリよりも多くのハード ディスク容量を必要とし、生成にかなりの時間を要する場合があります。
-
ネイティブ イメージは保持する必要があります。
-
元のアセンブリまたはその依存関係のいずれかに対してサービスを提供する場合は、イメージを再生成する必要があります。
-
アプリケーションまたはシナリオごとに異なるネイティブ イメージを使用する場合、1 つのアセンブリで複数のネイティブ イメージが必要な場合があります。たとえば、2 つのアプリケーションの構成情報で、同じ依存アセンブリに対してバインディング決定が異なる場合です。
-
ネイティブ イメージは管理者が作成する必要があります。つまり Administrators グループの Windows アカウントから作成します。
このような一般的な考慮事項に加えて、ネイティブ イメージによってパフォーマンスが向上するかどうかを検討する場合は、アプリケーションの特性も考慮する必要があります。
-
多くの共有コンポーネントを使用する環境でアプリケーションを実行する場合は、ネイティブ イメージによってコンポーネントを複数のプロセスで共有できます。
-
アプリケーションが複数のアプリケーション ドメインを使用する場合は、ネイティブ イメージによってドメイン間でコード ページを共有できます。
メモ |
|---|
| .NET Framework Version 1.0 と 1.1 では、アプリケーション ドメイン間でネイティブ イメージを共有することはできません。Version 2.0 では可能です。 |
-
アプリケーションをターミナル サーバーで実行する場合は、ネイティブ イメージによってコード ページを共有できます。
-
サイズの大きなアプリケーションでは、一般にネイティブ イメージにコンパイルすることでパフォーマンスが向上します。サイズの小さなアプリケーションでは、一般にあまり有効ではありません。
-
長時間実行するアプリケーションでは、ランタイム JIT コンパイルのパフォーマンスの方がネイティブ イメージよりも若干優れています。ハード バインディングによって、このパフォーマンスの違いをある程度緩和できます。
ハード バインディングによってスループットが向上し、ネイティブ イメージの作業セットのサイズが小さくなります。ハード バインディングの短所は、アセンブリを読み込む際にアセンブリにハード バインディングされているすべてのイメージを読み込む必要があることです。これによって、大きなアプリケーションの起動時間がかなり長くなります。
ハード バインディングは、すべてのアプリケーションのパフォーマンスが重要な意味を持つシナリオで読み込まれる依存関係に適しています。ネイティブ イメージの使用のすべての局面において言えることですが、ハード バインディングによってアプリケーションのパフォーマンスが向上するかどうかを確認する唯一の方法は、パフォーマンスを慎重に測定することです。
DependencyAttribute 属性と DefaultDependencyAttribute 属性によって、ハード バインディング ヒントを Ngen.exe に提供できます。
メモ |
|---|
| この 2 つの属性は、コマンドではなく Ngen.exe へのヒントです。これらの属性を使用してもハード バインディングは保証されません。属性の意味は、今後のリリースで変更される可能性があります。 |
依存関係のバインディング ヒントの指定
アセンブリに DependencyAttribute を適用して、指定された依存関係が読み込まれるかどうかを示します。System.Runtime.CompilerServices.LoadHint.Always は、ハード バインディングが適切であることを示し、Default は依存関係の既定値を使用する必要があることを示し、Sometimes はハード バインディングが適切ではないことを示します。
2 つの依存関係があるアセンブリのための属性のコードを次に示します。最初の依存関係 (Assembly1) はハード バインディングに適しており、2 番目 (Assembly2) は適していません。
Imports System.Runtime.CompilerServices
<Assembly:DependencyAttribute("Assembly1", LoadHint.Always)>
<Assembly:DependencyAttribute("Assembly2", LoadHint.Sometimes)>
using System.Runtime.CompilerServices;
[assembly:DependencyAttribute("Assembly1", LoadHint.Always)]
[assembly:DependencyAttribute("Assembly2", LoadHint.Sometimes)]
using namespace System::Runtime::CompilerServices;
[assembly:DependencyAttribute("Assembly1", LoadHint.Always)];
[assembly:DependencyAttribute("Assembly2", LoadHint.Sometimes)];
アセンブリ名には、ファイル名拡張子は含めません。表示名を使用できます。
アセンブリの既定のバインディング ヒントの指定
既定のバインディング ヒントは、依存するアプリケーションが即座に頻繁に使用するアセンブリだけに必要です。そのようなアセンブリには、System.Runtime.CompilerServices.LoadHint.Always と共に DefaultDependencyAttribute を適用して、ハード バインディングを使用することを指定します。
メモ |
|---|
| System.Runtime.CompilerServices.LoadHint.Always 以外の値を使用してこの属性を適用しても、この属性をまったく適用しない場合と結果は同じため、このカテゴリに属さない .dll アセンブリに DefaultDependencyAttribute を適用する理由はありません。 |
Microsoft では、DefaultDependencyAttribute を使用して、mscorlib.dll などのごく一部の .NET Framework のアセンブリの既定値としてハード バインディングを指定します。
アプリケーションでネイティブ イメージが使用されているかどうかを確認するには、アセンブリ バインディング ログ ビューア (Fuslogvw.exe) を使用します。バインディング ログ ビューアのウィンドウの [ログのカテゴリ] ボックスで、[ネイティブ イメージ] をクリックします。Fuslogvw.exe は、ネイティブ イメージが拒否された理由に関する情報を提供します。
JitCompilationStart マネージ デバッグ アシスタント (MDA) を使用して、JIT コンパイラが関数のコンパイルを開始する時期を指定できます。
非常に大きいアプリケーションのネイティブ イメージの生成には、かなりの時間がかかります。同様に、共有コンポーネントへの変更またはコンピュータ設定への変更には、多くのネイティブ イメージの更新が必要になります。install アクションと update アクションには /queue オプションがあり、これによって、ネイティブ イメージ サービスによる遅延実行をキューに置くことができます。さらに、Ngen.exe には、サービスを制御するための queue アクションと executeQueuedItems アクションがあります。詳細については、「ネイティブ イメージ サービス」を参照してください。
生成できないメソッドがアセンブリ内にある場合、Ngen.exe が生成するネイティブ イメージにそのメソッドは含まれません。ランタイムは、このアセンブリの実行中に JIT コンパイルに戻し、ネイティブ イメージから除外されたこれらのメソッドを処理します。
さらに、アセンブリがアップグレードされた場合、または何らかの理解によってイメージが無効になった場合、ネイティブ イメージは使用されません。
無効なイメージ
Ngen.exe を使用してアセンブリのネイティブ イメージを作成する場合、出力は指定したコマンド ライン オプションおよび使用するコンピュータ上の設定に依存します。影響のある設定は次のとおりです。
-
.NET Framework Version。
-
オペレーティング システムのバージョン (Windows 9x ファミリから Windows NT ファミリに変更した場合)。
-
アセンブリの正確な ID (ID は再コンパイル時に変更されます)。
-
アセンブリが参照するすべてのアセンブリの正確な ID (ID は再コンパイル時に変更されます)。
-
セキュリティ関連の要因。
Ngen.exe は、ネイティブ イメージを生成するときに上記の情報を記録します。アセンブリが実行されると、ランタイムは、コンピュータの現在の環境と一致するオプションおよび設定を指定して生成されたネイティブ イメージを検索します。一致するネイティブ イメージが見つからない場合、ランタイムはアセンブリを JIT コンパイルに戻します。コンピュータの設定および環境が次のように変更されると、ネイティブ イメージは無効になります。
-
.NET Framework Version。
更新を .NET Framework に適用すると、Ngen.exe を使用して作成したすべてのネイティブ イメージは、無効になります。したがって、.NET Framework の更新では、常に Ngen Update コマンドが実行されてすべてのネイティブ イメージが再生成されます。.NET Framework は、インストールする .NET Framework ライブラリの新しいネイティブ イメージを自動的に作成します。
-
オペレーティング システムのバージョン (Windows 9x ファミリから Windows NT ファミリに変更した場合)。
たとえば、コンピュータで稼動しているオペレーティング システムのバージョンが Windows 98 から Windows XP に変更されると、ネイティブ イメージ キャッシュに格納されたすべてのネイティブ イメージは無効になります。ただし、オペレーティング システムを Windows 2000 から Windows XP に変更した場合は、イメージは無効になりません。
-
アセンブリの正確な ID。
アセンブリを再コンパイルすると、アセンブリの対応するネイティブ イメージは無効になります。
-
アセンブリが参照するすべてのアセンブリの正確な ID。
マネージ アセンブリを更新する場合、そのアセンブリに直接または間接に依存するすべてのネイティブ イメージが無効になるため、これらを再生成する必要があります。これには、通常の参照と強くバインドされた依存関係も含まれます。ソフトウェアの更新を適用するときには、インストール プログラムで Ngen Update コマンドを実行して、依存するすべてのネイティブ イメージを再生成する必要があります。
-
セキュリティ関連の要因。
アセンブリに事前に与えられていたアクセス許可を制限するマシン セキュリティ ポリシーを変更すると、そのアセンブリのコンパイル済みのネイティブ イメージが無効になることがあります。
共通言語ランタイムがコード アクセス セキュリティを管理する方法とアクセス許可を使用する方法の詳細については、「コード アクセス セキュリティ」を参照してください。
次のコマンドは、現在のディレクトリにある ClientApp.exe のネイティブ イメージを生成し、ネイティブ イメージ キャッシュにインストールします。アセンブリの構成ファイルが存在する場合、Ngen.exe はその構成ファイルを使用します。さらに、ネイティブ イメージは、ClientApp.exe が参照するあらゆる .dll ファイルに対して生成されます。
ngen install ClientApp.exe
Ngen.exe によってインストールされるイメージは、ルートとも呼ばれます。ルートは、アプリケーションまたは共有コンポーネントです。
指定したパスにある MyAssembly.exe のネイティブ イメージを生成するコマンドを次に示します。
ngen install c:\myfiles\MyAssembly.exe
アセンブリおよびその依存関係を検索する場合、Ngen.exe は共通言語ランタイムと同じプローブ ロジックを使用します。既定では、ClientApp.exe が格納されているディレクトリがアプリケーションのベース ディレクトリとして使用され、すべてのアセンブリのプローブはこのディレクトリから始まります。この動作は、/AppBase オプションを使用してオーバーライドできます。
メモ |
|---|
| この動作は、アプリケーション ベースが現在のディレクトリに設定される .NET Framework Version 1.0 と 1.1 における Ngen.exe から変更されています。 |
アセンブリは、参照を伴わない依存関係を持つことができます。たとえば、System.Reflection.Assembly.Load メソッドを使用して .dll ファイルを読み込む場合などです。アプリケーション アセンブリの構成情報と /ExeConfig オプションを使用して、このような .dll ファイルのネイティブ イメージを作成できます。MyApp.exe の構成情報を使用して MyLib.dll のネイティブ イメージを生成するコマンドを次に示します。
ngen install c:\myfiles\MyLib.dll /ExeConfig:c:\myapps\MyApp.exe
この方法でインストールされたアセンブリは、アプリケーションと共に削除されません。
依存関係をアンインストールするには、それをインストールしたときと同じコマンド ライン オプションを使用します。前の例から MyLib.dll をアンインストールするコマンドを次に示します。
ngen uninstall c:\myfiles\MyLib.dll /ExeConfig:c:\myapps\MyApp.exe
グローバル アセンブリ キャッシュにアセンブリのネイティブ イメージを作成するには、アセンブリの表示名を使用します。次に例を示します。
ngen install "ClientApp, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=3c7ba247adcd2081, processorArchitecture=MSIL"
NGen.exe は、インストールする各シナリオに対して個別のイメージ セットを生成します。たとえば、次のコマンドはネイティブ イメージの通常操作用の完全なセット、デバッグ用の完全なセット、およびプロファイル用の第 3 のセットをインストールします。
ngen install MyApp.exe
ngen install MyApp.exe /debug
ngen install MyApp.exe /profile
ネイティブ イメージ キャッシュの表示
キャッシュにインストールしたネイティブ イメージは、Ngen.exe を使用して表示できます。次のコマンドは、ネイティブ イメージ キャッシュのすべてのネイティブ イメージを表示します。
display アクションは最初にすべてのルート アセンブリを表示し、次にコンピュータ上のすべてのネイティブ イメージの一覧を表示します。
アセンブリの情報だけを表示する場合は、アセンブリの簡易名を使用します。次のコマンドは、部分名 MyAssembly に一致するネイティブ イメージ キャッシュのすべてのネイティブ イメージ、その依存関係、および MyAssembly に依存するすべてのルートを表示します。
共有コンポーネント アセンブリに依存するルートを知ることは、共有コンポーネントがアップグレードされた後の update アクションの影響を予測する際に役立ちます。
アセンブリのファイル拡張子を指定する場合は、パスを指定するか、またはアセンブリが格納されているディレクトリから Ngen.exe を実行する必要があります。
ngen display c:\myApps\MyAssembly.exe
ネイティブ イメージ キャッシュ内で MyAssembly という名前を持ち、バージョン 1.0.0.0 であるすべてのネイティブ イメージを表示するコマンドを次に示します。
ngen display "myAssembly, version=1.0.0.0"
イメージの更新
一般に、共有コンポーネントがアップグレードされると、イメージが更新されます。イメージまたは依存関係が変更されたすべてのネイティブ イメージを更新するには、引数なしで update アクションを使用します。
すべてのイメージを更新するプロセスは、長くなることがあります。ネイティブ イメージ サービスによる更新は、/queue オプションを使用してキューに置くことができます。/queue オプションとインストールの優先順位の詳細については、「ネイティブ イメージ サービス」を参照してください。
イメージのアンインストール
Ngen.exe は、共有コンポーネントに依存するすべてのアセンブリが削除された場合だけ共有コンポーネントが削除されるように依存関係の一覧を維持します。また、ルートとしてインストールされた共有コンポーネントは削除されません。
次のコマンドは、ルートの ClientApp.exe のすべてのシナリオをアンインストールします。
uninstall アクションは、特定のシナリオを削除するために使用できます。次のコマンドは、ルートの ClientApp.exe のすべてのデバッグ シナリオをアンインストールします。
ngen uninstall ClientApp /debug
メモ |
|---|
| /debug シナリオをアンインストールしても、/profile と /debug. の両方を含むシナリオはアンインストールされません。 |
次のコマンドは、ClientApp.exe の特定のバージョンのすべてのシナリオをアンインストールします。
ngen uninstall "ClientApp, Version=1.0.0.0"
次のコマンドは、"ClientApp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=3c7ba247adcd2081, processorArchitecture=MSIL", のすべてのシナリオまたはアセンブリのデバッグ シナリオだけをアンインストールします。
ngen uninstall "ClientApp, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=3c7ba247adcd2081, processorArchitecture=MSIL"
ngen uninstall "ClientApp, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=3c7ba247adcd2081, processorArchitecture=MSIL" /debug
install アクションと同様に、拡張子を指定する場合は、アセンブリが格納されているディレクトリから Ngen.exe を実行するか、またはフル パスを指定する必要があります。
ネイティブ イメージ サービスの例については、「ネイティブ イメージ サービス」を参照してください。
関連項目
.NET Framework ツール
SDK のコマンド プロンプト
概念
ネイティブ イメージ サービス
MSIL からネイティブ コードへのコンパイル
ランタイムがアセンブリを検索する方法