次のコマンドは、現在のディレクトリにある 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 を実行するか、またはフル パスを指定する必要があります。
ネイティブ イメージ サービスの例については、「ネイティブ イメージ サービス」を参照してください。