インストール中の NGen は、 ターゲット マシンでマネージド アセンブリのネイティブ イメージを生成する事で あなたのマネージド アプリケーションのスタート アップ時間を改善する事ができます。 この how to は、インストール時にマネージド アセンブリを NGen 実行する WiX サポートの使用を 述べています。
WiX の NGen についてのサポートは、WiX extension ライブラリーでインクルードされていて、 プロジェクトで 使う前に追加されていなければなりません。もし WiX を コマンドラインで 使っているなら、candle と light のコマンドラインに 以下を追加する必要があります:
-ext WixNetFxExtension
もし WiX を Visual Studio で使っているなら、Add Reference dialog を使って 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">
いったん .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 アトリビュートは、 イメージ生成中に 依存するアセンブリを探す為に使うディレクトリーを 確認しています。 このケースでは、アプリケーションのインストールディレクトリーに セットされています。