ASP.NET Web アプリケーション プロジェクト プリコンパイルの概要

既定では、Web アプリケーション プロジェクトのコード ファイルはすべて、Microsoft Build Engine (MSBuild) により、単一のアセンブリにプリコンパイルされます。 ASP.NET Web ページ (.aspx)、ユーザー コントロール (.ascx)、および MVC Razor のビュー (.cshtml および .vbhtml) は、ASP.NET コンパイラにより、サーバー上で動的にコンパイルされます。 必要に応じて Web ページ、ユーザー コントロール、および Razor のビューもプリコンパイルできます。

注意

このトピックは、Web サイト プロジェクトにのみ適用されます。Web アプリケーション プロジェクトと Web サイト プロジェクトの相違点については、「Visual Studio での Web アプリケーション プロジェクトと Web サイト プロジェクト」を参照してください。Web サイト プロジェクトをプリコンパイルする方法については、「ASP.NET Web Site Project Precompilation Overview」を参照してください。

コンパイル モデル

プロジェクトに含まれるすべてのコード ファイル (スタンドアロン ファイル、分離コード ファイル、およびクラス ファイル) は、単一のアセンブリにプリコンパイルされます。 既定では、このアセンブリは Bin フォルダー内でビルドおよび保持されます。 このコンパイル モデルにより単一のアセンブリが作成されるため、アセンブリ名、アセンブリのバージョンなどの属性を指定できます。 また、出力されるアセンブリの場所を指定することもできます。 出力アセンブリの場所を変更するには、ソリューション エクスプローラーでプロジェクト名を右クリックし、[プロパティ] をクリックしてから、[ビルド] タブをクリックします。 [ビルド] タブには、[ビルド出力パス] という名前のフィールドがあり、このフィールドで出力アセンブリへのパスを指定できます。

Web サイト プロジェクトがプロジェクト フォルダーで定義されるのに対し、Web アプリケーション プロジェクトはプロジェクト ファイルで定義されます。 プロジェクト ファイルは、プロジェクトを形成するファイルを参照し、アセンブリ参照やその他のプロジェクトのメタデータ設定を含んでいます。 プロジェクト フォルダーに含まれるファイルであっても、プロジェクト ファイルの中で定義されていないものは、Web アプリケーション プロジェクトの一部としてコンパイルされません。 Visual Studio または Visual Web Developer Express でプロジェクト設定に追加や変更が加えられると、プロジェクトごとに生成されるプロジェクト ファイル (*.proj) にその内容が反映されます。

ページを実行し、デバッグするには、Web アプリケーション プロジェクト全体をコンパイルする必要があります。 しかし、Visual Studio および Visual Web Developer Express では、インクリメンタル ビルド モデルが採用されており、変更したファイルのみがビルドされるので、Web アプリケーション プロジェクト全体を短時間でビルドできます。

詳細については、「Web Application Projects Overview」を参照してください。

Aa983464.collapse_all(ja-jp,VS.110).gifクラス ファイルのコンパイル

Web アプリケーション プロジェクトは、MSBuild を使用してクラス ファイルをコンパイルします。 これらのクラス ファイルは、単一のアセンブリにコンパイルされます。 既定では、それらは Bin フォルダーに格納されます。 MSBuild の標準の拡張ルールを使用して、コンパイル プロセスの拡張およびカスタマイズを行うことができます。 詳細については、「MSBuild」を参照してください。

次の表に、単一のアセンブリにコンパイルされる Web アプリケーション プロジェクト クラス ファイルを示します。

クラス ファイルの種類

説明

スタンドアロン

作成後、Bin フォルダーに追加可能なクラス ファイル。

分離コード

ASP.NET Web ページでの表示およびその他の動作を定義するユーザー定義のコード。

デザイナー

自動生成コード。 .designer ファイルは変更しないでください。

Aa983464.collapse_all(ja-jp,VS.110).gifコンパイル オプションのカスタマイズ

たとえば、[プロジェクト デザイナー] ウィンドウの [アプリケーション] プロパティ ページでは、出力アセンブリ名、バージョン、その他の詳細を指定できます。 [プロジェクト デザイナー] ウィンドウの [ビルド] ページでは、プロジェクトのビルド構成を指定できます。 たとえば、エラーの処理方法やアセンブリ出力の詳細を指定できます。 また、[ビルド イベント] プロパティ ページで値を設定すると、コンパイル時のビルド前およびビルド後のステップを追加できます。 プロパティ ページの詳細については、「プロジェクト デザイナー ユーザー インターフェイス リファレンス」を参照してください。

[ビルド アクション] プロパティの設定

既定では、[ビルド アクション] プロパティを [コンパイル] に設定した Web アプリケーション プロジェクトのクラス ファイルだけが MSBuild によってコンパイルされます。 ただし、Web アプリケーション プロジェクトの App_Code フォルダー内のクラス ファイルは、ASP.NET によってコンパイルされます。 これは、それらのビルド アクションが明示的に [コンパイル] に設定されていない場合でも同様です。

注意

Web サイト プロジェクトには、App_Code フォルダーが含まれています。このフォルダーは、通常 Web アプリケーション プロジェクトには含まれません。App_Code フォルダーの詳細については、「Shared Code Folders in ASP.NET Web Sites」を参照してください。

動的なコンパイル

プロジェクトのコード ファイルはすべて、MSBuild により単一のアセンブリにプリコンパイルされます。これに対して、Web アプリケーション プロジェクトの ASP.NET Web ページ (.aspx)、ユーザー コントロール (.ascx)、および MVC Razor のビュー (.cshtml および .vbhtml) は、ASP.NET コンパイラによりサーバー上で動的にコンパイルされます。 これは、コンパイルおよび配置を完了したサイト内の ASP.NET Web ページ、ユーザー コントロール、および Razor のビューに対して、限定的な変更を加えることができることを意味します。 たとえば、コントロールの配列、色、フォント、およびその他のページの表示形式を変更できます。 このような変更を加えた後、サイトで最初のページ要求を受信すると、ASP.NET は変更されたファイルを再コンパイルします。

分離コード ファイルが保護されているか、公開されている限り、分離コード ファイルでコントロールを定義できます。 .aspx ページは、分離コード ファイルから継承するため、ページはそのコントロールを使用します。 コントロール定義を分離コード ファイルに移動するのは、次のような場合です。

  • コントロールの型を組み込みの ASP.NET 型から派生させる必要がある場合。

  • コントロールのスコープを既定のスコープ以外に変更する場合。 スコープは、アクセシビリティ レベルを表します。たとえば、public、private、internal、protected、protected internal などです。

  • コントロール宣言にメタデータ属性を追加する必要がある場合。

  • コントロール宣言に XML コード コメントを書き込む必要がある場合。

コントロールを追加する方法の詳細については、「How to: Add Controls to an ASP.NET Web Page Programmatically」を参照してください。

配置

既定では、すべてのクラス ファイルが単一のアセンブリにコンパイルされます。つまり、配置する必要があるのは、このアセンブリと、.aspx ファイル、.ascx ファイル、.cshtml ファイル、.vbhtml ファイル、および静的コンテンツ ファイルだけです。 このシナリオでは、.aspx ファイル、.ascx ファイル、.cshtml ファイル、.vbhtml ファイルのマークアップは、ブラウザーからページの要求がない限り実行可能なコードにコンパイルされません。

ただし、別のコンパイル オプションとマージ オプションを指定できます。 たとえば、.aspx ファイルをプリコンパイルすることや、1 つではなく複数のアセンブリを作成するよう指定することができます。 Web アプリケーション プロジェクトのコンパイル オプションとマージ オプション、およびそれらの指定方法の詳細については、次のリソースを参照してください。

Web アプリケーション プロジェクトの配置方法の詳細については、「Visual Studio および ASP.NET の Web 配置コンテンツ マップ」を参照してください。

参照

概念

Visual Studio および ASP.NET の Web 配置コンテンツ マップ

Visual Studio での Web アプリケーション プロジェクトと Web サイト プロジェクト

その他の技術情報

MSBuild