WebSurfer's Home

トップ > Blog 1   |   ログイン
APMLフィルター

コンパイル済みアセンブリの保存場所

by WebSurfer 2013年9月30日 14:13

ASP.NET ベースの web アプリケーションで、コンパイル済みのアセンブリが HDD のどこに保存されるかについて、調べたことを備忘録として書いておきます。

コンパイルの方法も保存場所も、Web サイトプロジェクトか Web アプリケーションプロジェクトのどちらで作っているかによって違ってきます。

Web サイトプロジェクト

Web サイトプロジェクトでは、ソースファイルをそのまま Web サーバー (IIS) の仮想ディレクトリに配置します。(プリコンパイルをしない場合です)

ユーザーが Web サイトの ASP.NET ページ (.aspx ファイル) などのリソースを最初に要求したときに、ページやコードファイルが Web サーバー (IIS) によって動的にコンパイルされます。

コンパイルされたコードは Temporary ASP.NET Files フォルダーにキャッシュされ、同じページに対するその後の要求ではキャッシュのコンパイル済みコードを使用するので、効率良く処理されます。

その詳細については、MSDN ライブラリ ASP.NET の動的コンパイルの概要 を参照してください。

Web アプリケーションプロジェクト

Web アプリケーションプロジェクトの場合は、Visual Studio を使用してプロジェクトの Bin フォルダーに、単一のアセンブリを、手動で作成します。(Web サイトプロジェクトのように Web サーバーによって自動的にコンパイルされない)

Web サイトプロジェクトと Web アプリケーションプロジェクトとの違いについては、MSDN ライブラリ Visual Studio での Web アプリケーション プロジェクトと Web サイト プロジェクト を見てください。

そのページにも書いてありますが、日本語訳がイマイチなので、原文の Compilation のセクションの説明を以下に抜粋します。

"For web application projects, you typically build the project in Visual Studio or by using the ASP.NET batch compiler on a computer that is not the production IIS server. All code-behind class files and standalone class files in the project are compiled into a single assembly, which is then put in the web application project's Bin folder. (The .aspx and .ascx files are compiled dynamically in a manner similar to what is done for web site projects.)"

つまり、コードビハンド(.aspx.cs)や独立したクラスファイルは、Visual Studio(または ASP.NET バッチ コンパイラ)を使用して、手動で単一アセンブリにコンパイルして、アプリケーションルート直下の Bin フォルダに配置します。運用環境では、その単一アセンブリを Web サーバーにコピーして使います。

一方、.aspx と .ascx(ページディレクティブと HTML デザインブロック)は、Web サイトプロジェクトと同様に、Web サーバーで動的にアセンブリにコンパイルされ、Temporary ASP.NET Files フォルダに保存されます。

コードの継承関係を見れば分かると思いますが、Page ← .aspx.cs ← .aspx となっており(矢印の方向が継承元)、実行時に両方メモリーにロードされ、合体して動作するようになっています。

Tags: ,

ASP.NET | ASP.NET

About this blog

2010年5月にこのブログを立ち上げました。主に ASP.NET Web アプリ関係の記事です。

Calendar

<<  2024年4月  >>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

View posts in large calendar