How To: インストール中に .NET マネージド アセンブリを NGen 実行する

インストール中の NGen は、 ターゲット マシンでマネージド アセンブリのネイティブ イメージを生成する事で あなたのマネージド アプリケーションのスタート アップ時間を改善する事ができます。 この how to は、インストール時にマネージド アセンブリを NGen 実行する WiX サポートの使用を 述べています。

Step 1: プロジェクトに WiX .NET extensions ライブラリーを 追加する

WiX の NGen についてのサポートは、WiX extension ライブラリーでインクルードされていて、 プロジェクトで 使う前に追加されていなければなりません。もし WiX を コマンドラインで 使っているなら、candle と light のコマンドラインに 以下を追加する必要があります:

-ext WixNetFxExtension 

もし WiX を Visual Studio で使っているなら、Add Reference dialog を使って extensions を 追加する事ができます:

  1. Visual Studio で WiX プロジェクトを開く
  2. ソリューション エクスプローラーでプロジェクトを右クリックして、Add Reference... を選ぶ
  3. リストから WixNetFxExtension.dll アセンブリを選んで、追加をクリックする
  4. Add Reference dialog を閉じる

Step 2: プロジェクトに WiX .NET extensions 名前空間を 追加する

いったん ライブラリーがプロジェクトに追加されたら、目当ての WiX エレメントにアクセスできるように プロジェクトに .NET extensions 名前空間を 追加する必要があります。これをするには、プロジェクトで トップレベルの <Wix> エレメントに 以下のアトリビュートを追加する 修正をします:

xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension"

スタンダードな名前空間と 追加された .NET extensions 名前空間を持つ 完全な WiX エレメントは このようになります:

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
     xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension">

Step 3: NGen の為に マネージド ファイルに マークを付ける

いったん .NET extension ライブラリーと プロジェクトに追加された名前空間を 持ったら、 あなたのマネージド アセンブリで NGen を可能にする為に <NetFx:NativeImage> エレメント ( alt ) を 使う事ができます。NativeImage エレメントは、親の File エレメントの中に行きます:

<Component Id="myapplication.exe" Guid="PUT-GUID-HERE">
    <File Id="myapplication.exe" Source="MySourceFiles\MyApplication.exe" KeyPath="yes" Checksum="yes">
        <netfx:NativeImage Id="ngen_MyApplication.exe" Platform="32bit" Priority="0" AppBaseDirectory="APPLICATIONROOTDIRECTORY"/>
    </File>
</Component>

id アトリビュートは、ネイティブ イメージの為のユニーク識別子です。Platform アトリビュートは、 ネイティブ イメージが生成されるべきプラットフォーム、このケースでは 32ビット、を指定しています。 Priority アトリビュートは、いつ イメージ生成が行われるべきか、このケースでは セットアップ プロセス中にすぐさま、を指定しています。AppBaseDirectory アトリビュートは、 イメージ生成中に 依存するアセンブリを探す為に使うディレクトリーを 確認しています。 このケースでは、アプリケーションのインストールディレクトリーに セットされています。