Web サイトの内容をプリコンパイルしておく方法

download.gifサンプル コードのダウンロード (aspnettips_PreCompile.msi, 244 KB)

※このサンプルをお使いいただくためには、Visual Studio 2005 が必要です。

ASP.NET 2.0 では、アプリケーションを事前にコンパイル(プリコンパイル)しておくことができます。ASP.NET アプリケーションは、通常初回起動時にコンパイルされるため、最初に実行するときに時間がかかります。プリコンパイルしておけば、初回から高速に実行可能です。また、大規模なサイトを開発中にテストする場合、初回起動時の遅さを回避できるので、テストを効率よく行うことができます。
さらに、プリコンパイルしておけば、コンパイル後のバイナリファイル(アセンブリ)だけを顧客に納入することができます。納入先との契約次第ですが、バイナリファイルだけを渡すことで納入先がソースコードを改造して再流通させることを防ぐことができます。
今回、Calendar コントロールが 1 つだけある単純なページを作成し(図 1)、これを次の手順でプリコンパイルしてみます。

 図

図 1 今回作成するページ

  1. サンプルページの作成

  2. プリコンパイルの実行

  3. 実行

(1) サンプルページの作成

メニューバーから [ファイル] - [新規作成] - [Web サイト] を選択してください。表示される「新しい Web サイト」ダイアログボックスで、「場所」を「HTTP」に設定し、新しいASP.NET Web サイトを作成します。今回は、「PreCompile」という名前の Web サイトを作ります(図 2)。

 図

図 2 「新しい Web サイト」ダイアログボックス

Default.aspx のフォーム上に、Calendar コントロールを 1 つ配置します(図 3)。

PreCompile_fig03.gif

図 3 Calendar コントロール

今回は、この状態のアプリケーションをプリコンパイルしてみます。

(2) プリコンパイルの実行

ASP.NET アプリケーションのプリコンパイルを行うには、コマンドプロンプトで aspnet_compiler.exe というツールを起動します。 aspnet_compiler.exe は、.NET Framework ベータ 2 の場合、%SystemRoot%\Microsoft.NET\Framework\v2.0.50215 フォルダ内にあります。最後のフォルダ名が、.NET Framework のバージョンによって異なるので注意してください。

PreCompile 仮想フォルダが、D:\Inetpub\wwwroot\PreCompile フォルダにあり、コンパイル結果を d:\PreCompile フォルダに出力する場合、次のコマンドを実行します。

aspnet_compiler -v PreCompile -p D:\Inetpub\wwwroot\PreCompile d:\PreCompile

図 4 は、実際に実行してみた画面です。

PreCompile_fig04.gif

図 4 aspnet_compiler の実行

コンパイル先には、次のようなファイルが作られているはずです。

D:\PreCompile
│   Default.aspx
│   PrecompiledApp.config
└─bin
        App_Web_acetaow8.dll
        default.aspx.cdcab7d2.compiled

コンパイル後のフォルダにも Default.aspx ファイルがありますが、これはダミーのファイルです。中には、ダミーの文字列が記述されています。アプリケーションの実体は、bin フォルダの中の .dll ファイルと .compiled ファイルにあります。

(3) 実行

ソースの入った仮想フォルダ(d:\Inetpub\wwwroot\PreCompile)は、どこかにバックアップしたあと削除し、コンパイル後の d:\PreCompile フォルダの内容を仮想フォルダにコピーしてください。

その後、http://localhost/PreCompile/ を Internet Explorer で開くと、実行できることがわかります(図 5)。

 図

図 5 コンパイル後のアプリケーションの実行