Web サイトの内容をプリコンパイルしておく方法
サンプル コードのダウンロード (aspnettips_PreCompile.msi, 244 KB)
※このサンプルをお使いいただくためには、Visual Studio 2005 が必要です。
ASP.NET 2.0 では、アプリケーションを事前にコンパイル(プリコンパイル)しておくことができます。ASP.NET アプリケーションは、通常初回起動時にコンパイルされるため、最初に実行するときに時間がかかります。プリコンパイルしておけば、初回から高速に実行可能です。また、大規模なサイトを開発中にテストする場合、初回起動時の遅さを回避できるので、テストを効率よく行うことができます。
さらに、プリコンパイルしておけば、コンパイル後のバイナリファイル(アセンブリ)だけを顧客に納入することができます。納入先との契約次第ですが、バイナリファイルだけを渡すことで納入先がソースコードを改造して再流通させることを防ぐことができます。
今回、Calendar コントロールが 1 つだけある単純なページを作成し(図 1)、これを次の手順でプリコンパイルしてみます。
図 1 今回作成するページ
サンプルページの作成
プリコンパイルの実行
実行
(1) サンプルページの作成
メニューバーから [ファイル] - [新規作成] - [Web サイト] を選択してください。表示される「新しい Web サイト」ダイアログボックスで、「場所」を「HTTP」に設定し、新しいASP.NET Web サイトを作成します。今回は、「PreCompile」という名前の Web サイトを作ります(図 2)。
図 2 「新しい Web サイト」ダイアログボックス
Default.aspx のフォーム上に、Calendar コントロールを 1 つ配置します(図 3)。
図 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 は、実際に実行してみた画面です。
図 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 フォルダの内容を仮想フォルダにコピーしてください。
その後、https://localhost/PreCompile/ を Internet Explorer で開くと、実行できることがわかります(図 5)。
図 5 コンパイル後のアプリケーションの実行