次の方法で共有


ASP.NET のプリコンパイルの概要

更新 : 2007 年 11 月

ASP.NET では、ユーザーが Web サイトを利用できるようにする前に、Web サイトをプリコンパイルできます。これにより、応答時間の短縮、エラーのチェック、ソース コードの保護、効率的な配置など、多くの利点を得ることができます。

また、Web アプリケーション プロジェクト モデルを使用することでもプロジェクトをコンパイルできます。プロジェクトに含まれるすべてのコード ファイル (スタンドアロン ファイル、分離コード ファイル、およびクラス ファイル) は、単一のアセンブリにコンパイルされ、Bin ディレクトリに格納されます。コンパイルでは単一のアセンブリが作成されるため、アセンブリ名やアセンブリのバージョンなどの属性を指定できます。また、出力されるアセンブリを Bin ディレクトリに格納したくない場合は、任意の場所を指定できます。詳細については、「Web アプリケーション プロジェクトのコンパイル」を参照してください。

このトピックの内容は次のとおりです。

  • シナリオ

  • プリコンパイル機能

  • 背景

  • コード例

機能

ASP.NET Web サイトをプリコンパイルすると、次のような利点があります。

  • ページとコード ファイルの初回要求時にそれらをコンパイルする必要がないので、ユーザーへの応答時間が短縮されます。これは、更新頻度の高い大規模なサイトで特に役立ちます。

  • ユーザーがサイトにアクセスする前にコンパイル時のバグを識別する手段になります。

  • ソース コードを含めずに運用サーバーに配置できるサイトのコンパイル済みバージョンを作成できます。

ページのトップへ

背景

既定では、ユーザーが Web サイトのページなどのリソースを最初に要求したときに、ASP.NET Web ページとコード ファイルが動的にコンパイルされます。ページおよびコード ファイルが最初にコンパイルされた後で、そのコンパイルされたリソースがキャッシュされます。このため、同じページに対する以後の要求が非常に効率的になります。

また、ASP.NET では、ユーザーがサイトを利用できるようにする前に、サイト全体をプリコンパイルすることもできます。ASP.NET では、次のオプションを利用してサイトをプリコンパイルできます。

  • サイトの埋め込み先プリコンパイル。このオプションは、パフォーマンスを向上し、エラー チェックを実行する既存のサイトに有効です。

  • サイトの配置用プリコンパイル。このオプションは、運用サーバーに配置できる特別な出力を生成します。

また、読み取り専用サイトとして、または更新可能なサイトとして、サイトをプリコンパイルすることもできます。次のセクションでは、各オプションについて詳しく説明します。

埋め込み先プリコンパイル

Web サイトは、プリコンパイルすることによってパフォーマンスをある程度向上させることができます。これは、ASP.NET Web ページやコード ファイルを頻繁に変更したり追加したりするサイトで特に効果的です。流動的な Web サイトでは、新規のページや変更されたページを動的にコンパイルするのに余分な時間がかかり、それがサイトの品質に対するユーザーの認識に影響することがあります。

サイトの埋め込み先プリコンパイルでは、実質的に、ユーザーがサイトにページを要求したときに行われるのと同じコンパイルを実行します。そのため、主要なパフォーマンスの改善点として、初回要求時にページをコンパイルする必要がなくなります。

埋め込み先プリコンパイルを実行すると、ASP.NET ファイルの種類がすべてコンパイルされます。HTML ファイル、グラフィックス、およびその他の ASP.NET 静的ファイル以外のファイルはそのままの状態に置かれます。プリコンパイル プロセスは、ASP.NET が、ファイル間の依存関係を明らかにして動的コンパイルに適用するのと同じロジックに従います。プリコンパイル中、コンパイラは、すべての実行可能な出力に対してアセンブリを作成し、これらを %SystemRoot%\Microsoft.NET\Framework\version\Temporary ASP.NET Files フォルダの下の特別なフォルダに格納します。その後、ASP.NET は、このフォルダのアセンブリに基づいて、ページに対する要求を満たします。

サイトを再びプリコンパイルする場合は、新規のファイルや変更されたファイルのみがコンパイルされます (また、それらのファイルと従属関係にあるファイルもコンパイルされます)。このようなコンパイラの最適化により、小規模な更新を行った後でもサイトをコンパイルできます。

配置用プリコンパイル

サイトのプリコンパイルは、運用サーバーに配備できるサイトの実行可能バージョンを作成するときにも利用できます。配置用プリコンパイルでは、レイアウトの形式で出力が作成されます。このレイアウトには、アセンブリ、構成情報、サイトのフォルダに関する情報、および静的ファイル (HTML ファイルやグラフィックスなど) が含まれます。

サイトをコンパイルした後は、Windows XCopy コマンド、FTP、Windows インストールなどのツールを使用して、運用サーバーにレイアウトを配置できます。配置後、レイアウトはサイトとして機能し、ASP.NET は、このレイアウト内のアセンブリに基づいてページに対する要求を満たします。

サイトの配置用プリコンパイルでは、ソース コードやその他の知的所有権を保護できます。配置用コンパイル時にコンパイラがファイルを処理するプロセスの詳細については、後で説明する「ASP.NET のプリコンパイル時のファイル処理」を参照してください。

配置用プリコンパイルには、配置専用プリコンパイルと配置と更新用プリコンパイルの 2 種類があります。

配置専用プリコンパイル

配置専用プリコンパイルを実行すると、コンパイラは、通常は実行時にコンパイルされるほぼすべての ASP.NET ソース ファイルからアセンブリを生成します。これらのファイルには、ページ内のプログラム コード、.cs クラス ファイル、.vb クラス ファイル、その他のコード ファイル、およびリソース ファイルが含まれます。コンパイルは、すべてのソースとマークアップを出力から削除します。処理結果のレイアウトでは、各 .aspx ファイルに対して、そのページの適切なアセンブリへのポインタを含むコンパイル済みファイル (拡張子 .compiled) が生成されます。

ページのレイアウトを含めて Web サイトを変更するには、元のファイルを変更し、サイトを再コンパイルして、レイアウトを再配置する必要があります。ただし、サイトの構成は例外です。サイト構成は、サイトを再コンパイルしなくても、運用サーバー上の Web.config ファイルで変更できます。

このオプションを使用すると、ASP.NET Web ページを最大限に保護し、起動時に最高のパフォーマンスを得ることができます。

配置および更新用プリコンパイル

配置および更新用プリコンパイルを実行すると、コンパイラは、単一ファイルのページ内のページ コード以外のすべてのソース コードと、通常アセンブリを生成するその他のファイル (リソース ファイルなど) からアセンブリを生成します。コンパイラは、.aspx ファイルを、コンパイルされた分離コード モデルを使用する単一のファイルに変換し、これをレイアウトにコピーします。

このオプションでは、コンパイル後にサイト内の ASP.NET Web ページに一定の変更を行うことができます。たとえば、コントロールの配列、色、フォント、およびその他のページの表示形式を変更できます。また、イベント ハンドラやその他のコードを必要としない場合は、コントロールを追加することもできます。

サイトが初めて実行されると、ASP.NET により、マークアップからの出力を生成するために追加のコンパイルが実行されます。

Bb398860.alert_note(ja-jp,VS.90).gifメモ :

プリコンパイルされた更新可能なサイトでは、複数のページから同じ CodeFile クラスを参照することはできません。

プリコンパイルの決定マトリックス

使用するコンパイル モデルの決定に役立つ表を以下に示します。表に示されている一部のオプションについては、このトピックで後ほど説明します。

目的

コンパイル モデル

コードのコンパイルは問題にせず、アプリケーションをすばやく開発する。

既定のコンパイル (プリコンパイルなし) を使用する。

Web サイトに対する最初のページ要求の応答時間を短縮する。

埋め込み先プリコンパイルまたは配置コンパイル オプションの 1 つを使用する。

ソース コードとユーザー インターフェイス (UI) コードを分割する。

UI を更新できるプリコンパイルを使用する。

ソース コードを変更しないで UI コードを変更する。

UI を更新できるプリコンパイルを使用する。

運用サーバーからすべてのソース コードと UI コードを削除する。

UI を更新できないプリコンパイルを使用する。

特定のアセンブリを置換してアプリケーションを更新する。

固定名によるプリコンパイルを使用する。

厳密な名前付きアセンブリを使用することにより、アプリケーションのセキュリティを向上する。

署名されたアセンブリのプリコンパイルを使用する。

プリコンパイルの実行

Aspnet_compiler.exe ツールを使用して、コマンド ラインで Web サイトをプリコンパイルできます。詳細については、「方法 : ASP.NET Web サイトを配置のためにプリコンパイルする」および「ASP.NET コンパイル ツール (Aspnet_compiler.exe)」を参照してください。Visual Studio には、IDE から Web サイトをプリコンパイルするコマンドも用意されています。

Bb398860.alert_note(ja-jp,VS.90).gifメモ :

Web サイトのプリコンパイルでは、対象のサイトだけがコンパイルされ、子サイトはコンパイルされません。IIS でアプリケーションとしてマークされているサブフォルダが Web サイトに存在する場合は、親フォルダをプリコンパイルしたときに子アプリケーションはコンパイルされません。

ソースの保護を有効にしてコンパイルするサイトには、Web サイトをプリコンパイルするときに 1 つのコーディング制約が適用されます。完全修飾クラス名を使用することで、基本ページ クラス (分離コード クラス) から関連するページ クラス (.aspx ファイル) とページ クラス メンバを参照できます。ただし、この種類の参照は、ソースの保護を有効にしてサイトをプリコンパイルする場合には機能しません。これは、分離コード ファイルの基本ページ クラスは、.aspx ページから派生するページ クラスと同じアセンブリには配置されないためです。ソースの保護を有効にしたプリコンパイルの詳細については、「方法 : プリコンパイルされた Web サイトのアセンブリに署名する」を参照してください。

既定のコンパイル

ASP.NET アプリケーションを手動でコンパイルする必要はありません。既定では、アプリケーション内のページが Web ブラウザによって最初に要求されたときに、ASP.NET が Web アプリケーションをコンパイルします。アプリケーション内のファイルに変更を加えると、ASP.NET ランタイムは、次回ページが要求されたとき、変更されたファイルの依存関係を確認します。その後、変更によって影響を受けるファイルだけが再コンパイルされます。

利点

既定のコンパイルには、次のような利点があります。

  • 簡単に使用できます。ASP.NET コンパイラによって、すべてが自動的に行われます。

  • 開発段階で、Web サイトをプリコンパイルするのに必要な追加手順によって開発プロセスに遅れが生じる場合、このコンパイル モデルが最適です。

欠点

既定のコンパイルには、次のような欠点があります。

  • Web サイトに対する最初の要求時に大きな遅延が生じます。

  • 運用サーバー上にソース コード ファイルを格納する必要があります。

  • サーバー上の Web サイト ディレクトリに対してファイル システム アクセス権を持つユーザーであればだれでもソース コードと UI コードにアクセスできます。

既定のコンパイルを使用する場合

既定のコンパイルは、次のような場合に使用します。

  • Web サイトを開発してテストする場合。

  • 主として静的な情報を持つ Web サイトを対象とする場合。

  • 頻繁な変更がない Web サイトを対象とする場合。

  • 運用サーバーにソース コード ファイルを格納しても問題ない場合。

埋め込み先コンパイル

運用サーバーに既に配置されているサイトをプリコンパイルできます。これは、埋め込み先コンパイルと呼ばれます。アプリケーション内のファイルを変更した場合は、ASP.NET コンパイル ツールを使用して、影響を受けるファイルを再コンパイルできます。また、次にページがアプリケーションから要求されたときにも、影響を受けるファイルが自動的に再コンパイルされます。

このコンパイル モデルの詳細については、「方法 : ASP.NET Web サイトをプリコンパイルする」を参照してください。

利点

埋め込み先コンパイルには、次のような利点があります。

  • Web サイトの最初の応答時間を短縮できます。

  • 特別な配置手順は不要です。アプリケーションは、ページがサイトから要求された場合とまったく同じようにコンパイルされます。

欠点

埋め込み先コンパイルには、次のような欠点があります。

  • アプリケーションのすべてのソース コードを運用サーバー上に格納する必要があります。

  • Web サイト ディレクトリに対してアクセス権を持つユーザーであればだれでもソース コードと UI コードにアクセスできます。

埋め込み先コンパイルを使用する場合

埋め込み先コンパイルは、次のような場合に使用します。

  • Web サイト上のページが頻繁に変更される場合。

  • 運用サーバーにソース コード ファイルを格納しても問題ない場合。

  • 最初のページ要求時の応答時間を短くする必要がある場合。

UI を更新できるプリコンパイル

ASP.NET コンパイル ツールの -u スイッチを使用すると、ソース コード (.cs ファイル、.vb ファイル、およびリソース ファイル) を DLL にコンパイルできます。UI マークアップは、更新できるように .aspx ファイルに残すことができます。運用サーバーに Web サイトを配置した後でも、Web サイト全体を再コンパイルすることなく、.aspx コードを変更できます。

このコンパイル方法の詳細については、「方法 : ASP.NET Web サイトを配置のためにプリコンパイルする」を参照してください。

利点

UI を更新できるように Web サイトをプリコンパイルする方法には、次のような利点があります。

  • Web サイトの最初の応答時間を短縮できます。

  • ユーザー インターフェイスのデザイナは、Web サイト全体を再コンパイルすることなく、Web サイトの外観や動作を変更できます。

  • アプリケーションのソース コードに含まれる知的財産を保護する方法が用意されています。Web サイト ディレクトリに対してファイル システム アクセス権を持つユーザーであればだれでもコードに含まれる知的財産を閲覧できるという危険性を排除できます。

欠点

UI を更新できるように Web サイトをプリコンパイルする方法には、次のような欠点があります。

  • 運用サーバーへの配置前にコンパイルを別個に実行する必要があります。

  • Web サイト ディレクトリへのアクセス権を持つユーザーであればだれでも、アプリケーションの UI (.aspx ファイル) に含まれる知的財産にアクセスできます。

  • 複数のページから同じ CodeFile クラス (分離コード モデルを使用するページの関連コード ファイル) を参照することはできません。

UI を更新できるプリコンパイルを使用する場合

UI を更新できるアプリケーションのプリコンパイルは、次のような場合に使用します。

  • UI デザイナがソース コード開発者と別々に作業している場合。

  • プログラムのソース コードに、不用意な閲覧から保護する必要のある知的財産が含まれる場合。

  • プログラムのソース コードを運用サーバーに格納できない場合。

UI を更新できないプリコンパイル

ASP.NET コンパイル ツールでは、アプリケーションのすべてのソース コードを、アプリケーションの Bin ディレクトリに配置される DLL にコンパイルできます。これには、.aspx ファイルや .ascx ファイルなどの UI ファイルも含まれます。

このコンパイル方法の詳細については、「方法 : ASP.NET Web サイトを配置のためにプリコンパイルする」を参照してください。

利点

UI を更新できないプリコンパイルには、次のような利点があります。

  • Web サイトの最初の応答時間を短縮できます。

  • アプリケーションのソース コードと UI コードに含まれる知的財産を保護する方法が用意されています。Web サイト ディレクトリに対してアクセス権を持つユーザーであればだれでもコードに含まれる知的財産を閲覧できるという危険性を排除できます。

欠点

UI を更新できないプリコンパイルには、次のような欠点があります。

  • 運用サーバーへの配置前にコンパイルを別個に実行する必要があります。

  • アプリケーションの UI に小さな変更を加えた場合でも、Web サイト全体を再コンパイルする必要があります。

UI を更新できないプリコンパイルを使用する場合

UI を更新できない Web サイトのプリコンパイルは、次のような場合に使用します。

  • UI コードに、不用意な閲覧から保護する必要のある知的財産が含まれる場合。

  • UI を頻繁に変更する必要がない場合。

  • 運用サーバーにコンパイル済みの DLL だけを配置する場合。

固定名アセンブリへのプリコンパイル

ASP.NET コンパイル ツールでは、コンパイル中に生成されるアセンブリに対してランダムな名前が付与されます。アセンブリの名前は、アプリケーションを再コンパイルするたびに変わります。

アセンブリ名が変わるので、1 つのアセンブリを提供するためには、アプリケーション全体を再配置する必要があります。ただし、ASP.NET コンパイル ツールの -fixednames スイッチを使用すると、アプリケーション内の各ページに対して 1 つのアセンブリを作成できます。以降のコンパイルでは、アセンブリの名前は変更されません。これにより、変更したアセンブリのみを置換する、アプリケーションのサービス リリースを作成できます。

-fixednames スイッチでは、各ページに対して個別にアセンブリが作成されるため、アプリケーション内のページ数を制限する必要があります。

このプリコンパイル方法の詳細については、「方法 : ASP.NET コンパイル ツールで固定名を生成する」を参照してください。

利点

固定名アセンブリにプリコンパイルする方法には、次のような利点があります。

  • 個々のアセンブリの名前がコンパイルし直しても変わりません。このため、アプリケーション全体を再配置することなく、特定のアセンブリだけを置き換えることができます。

  • アプリケーションの小規模な更新も対象にできます。

欠点

固定名アセンブリにプリコンパイルする方法には、次のような欠点があります。

  • アプリケーション内の各ページに対して 1 つのアセンブリが作成されます。このため、多くのページで構成されるサイトの場合、多くのアセンブリが生成されます。

固定名アセンブリへのプリコンパイルを使用する場合

固定名アセンブリへの Web サイトのプリコンパイルは、次のような場合に使用します。

  • アプリケーション全体を置換することなく Web アプリケーションを提供する必要がある場合。

署名されたアセンブリへのプリコンパイル

ASP.NET コンパイル ツールを使用して、サーバーのグローバル アセンブリ キャッシュ (GAC: Global Assembly Cache) またはアプリケーションの Bin ディレクトリに配置できる厳密な名前のアセンブリを作成できます。署名されたアセンブリを使用すると、悪意のあるユーザーによる、アプリケーションのアセンブリの不正なコードへの置き換えが困難になります。

このコンパイル方法の詳細については、「方法 : プリコンパイルされた Web サイトのアセンブリに署名する」を参照してください。

利点

署名されたアセンブリへのプリコンパイルには、次のような利点があります。

  • 署名されたアセンブリを使用すると、アセンブリを不正なコードに置き換えることが困難になり、アプリケーションのセキュリティが向上します。

欠点

署名されたアセンブリへのプリコンパイルには、次のような欠点があります。

  • 共有開発環境でのキー管理が複雑になります。

  • アセンブリは ASP.NET ランタイムで呼び出されるためには AllowPartiallyTrustedCallersAttribute 属性を持っている必要があります。

署名されたアセンブリへのプリコンパイルを使用する場合

署名されたアセンブリへの Web サイトのプリコンパイルは、次のような場合に使用します。

  • 開発者がアプリケーション ディレクトリまたは GAC へのアクセス権を持ち、アプリケーションのアセンブリを置換できる場合。

  • アプリケーション コードから生成されるアセンブリの、第三者による置換を制限する必要がある場合。

プリコンパイルされた出力の書き込み

プリコンパイルが終了すると、指定したフォルダに出力結果が書き込まれます。出力は、ファイル転送プロトコル (FTP: File Transfer Protocol) または HTTP を使用してアクセスできる、ファイル システム内の任意のフォルダに書き込むことができます。ターゲット サイトに書き込むためには、適切なアクセス許可が必要です。

Bb398860.alert_note(ja-jp,VS.90).gifメモ :

公開では、Web サイトのフォルダおよびサブフォルダ内のファイルだけが配置されます。Machine.config ファイルは配置されません。したがって、ターゲット Web サーバーの構成はローカル コンピュータの Web サーバーの構成と異なる可能性があり、それがアプリケーションの動作に影響する場合があります。

ステージング サーバーまたは運用サーバー上のターゲット フォルダを指定したり、ローカル コンピュータ上のフォルダに出力を書き込んだりできます。運用サーバー上のフォルダを指定した場合、シングル ステップでプリコンパイルと配置を行うことができます。Web サイトの一部ではないフォルダに出力を書き込む場合は、個別のステップで出力をサーバーにコピーできます。

Bb398860.alert_note(ja-jp,VS.90).gifメモ :

プリコンパイル済みの Web サイトを Visual Studio で開いた場合、その Web サイトをビルドすることはできません。ビルド オプションが無効になっています。サイトを変更する場合、元の Web サイト内のファイルを編集し、サイトをプリコンパイルして、再度発行することをお勧めします。

コンパイルの出力には、コードまたはページのコンパイル済みアセンブリが含まれます。プリコンパイル済みサイトの更新を許可するオプションを選択した場合、.aspx、.asmx、および .ashx の各ファイルの分離コード クラスはアセンブリにコンパイルされます。ただし、.aspx、.asmx、および .ashx の各ファイルそのものはターゲット フォルダにそのままの形でコピーされるので、サイトの配置後にそれらのレイアウトを変更できます。更新できるプリコンパイル済みサイトの場合、単一ファイル ページのコードはアセンブリにコンパイルされません。その代わりに、ソース コードとして配置されます。

静的ファイルはコンパイルされません。これらのファイルは出力フォルダにそのままの形でコピーされます。静的ファイルには、グラフィックス、.htm ファイルまたは .html ファイル、テキスト ファイルなどがあります。詳細については、後で説明する「ASP.NET のプリコンパイル時のファイル処理」を参照してください。

エラーがプリコンパイル中に発生した場合、[出力] ウィンドウと [エラー一覧] ウィンドウに表示されます。プリコンパイル中にエラーが発生すると、サイトはコンパイルも公開もされません。

ASP.NET のプリコンパイル時のファイル処理

サイトを配置するためにプリコンパイルを実行すると、ASP.NET はレイアウト (コンパイラの出力を含む構造) を作成します。このセクションでは、プリコンパイル時にファイルがどのように処理されるかについて説明し、レイアウトの構造とコンテンツについても説明します。

ソース コード (プログラム コードやリソースなど、アセンブリを生成するすべてのファイル) とマークアップ (.aspx ファイル) の両方をプリコンパイルすることも、ソース コードのみをプリコンパイルすることもできます。

コンパイルされるファイル

プリコンパイル プロセスでは、ASP.NET Web アプリケーションのさまざまな種類のファイルを処理します。ファイルの処理方法は、アプリケーションを配置のみのためにプリコンパイルするか、または配置および更新のためにプリコンパイルするかによって異なります。

Bb398860.alert_note(ja-jp,VS.90).gifメモ :

サイトをプリコンパイルして配置のみを行う場合、または配置と更新を行う場合、ファイルのアクセス制御リスト (ACL: Access Control List) はターゲットのファイルとサブディレクトリには保存されません。たとえば、以前にサイトをプリコンパイルしてターゲットの場所に配置し、ファイルの ACL を変更して、サイトを再度プリコンパイルして配置した場合、ACL の変更は失われます。

次の表は、さまざまなファイルの種類と、アプリケーションをプリコンパイルして配置のみを行う場合に、それらのファイルに対して行われる処理を示しています。

ファイルの種類

プリコンパイルの処理

出力場所

.aspx、ascx、.master

アセンブリとそのアセンブリを指す .comiled ファイルを生成します。元のファイルは、要求を満たすためにプレースホルダとして置かれたままになります。

アセンブリと .compiled ファイルは Bin フォルダに書き込まれます。ページ (コンテンツが除去された .aspx ファイル) は元の場所に置かれたままになります。

.asmx、.ashx

アセンブリを生成します。元のファイルは、要求を満たすためにプレースホルダとして置かれたままになります。

Bin フォルダ

App_Code フォルダ内のファイル

Web.config の設定に応じて、単数または複数のアセンブリを生成します。

Bb398860.alert_note(ja-jp,VS.90).gifメモ :
App_Code フォルダ内の静的コンテンツは、出力先フォルダにコピーされません。

Bin フォルダ

.App_Code フォルダに存在しない .cs ファイルと .vb ファイル

ファイルに依存するページまたはリソースと一緒にコンパイルします。

Bin フォルダ

Bin フォルダ内の既存の .dll ファイル

ファイルをそのままコピーします。

Bin フォルダ

リソース (.resx) ファイル

App_LocalResources フォルダまたは App_GlobalResources フォルダ内の .resx ファイルの場合、1 つまたは複数のアセンブリと 1 つのカルチャ構造体を生成します。

Bin フォルダ

App_Themes フォルダおよびサブフォルダ内のファイル

出力先にアセンブリを生成し、そのアセンブリを指す .compiled ファイルを生成します。

Bin フォルダ

静的ファイル (.htm、.html、.js、グラフィックス ファイルなど)

ファイルをそのままコピーします。

コピー元と同じ構造です。

ブラウザ定義ファイル

ファイルをそのままコピーします。

Bb398860.alert_note(ja-jp,VS.90).gifメモ :
ブラウザ情報はマシンレベルの構成ファイルから継承されるため、出力先のサーバーでは動作が異なる可能性があります。

App_Browsers フォルダ

依存プロジェクト

依存プロジェクトの出力をアセンブリに生成します。

Bin フォルダ

Web.config ファイル

ファイルをそのままコピーします。

コピー元と同じ構造です。

Global.asax ファイル

アセンブリを生成します。

Bin フォルダ

ファイルの種類、およびアプリケーションを配置および更新用にプリコンパイルする場合の各ファイルの処理を次の表に示します。

ファイルの種類

プリコンパイルの処理

出力場所

.aspx、ascx、.master

分離コード クラス ファイルを持つファイルのアセンブリを生成します。また、そのアセンブリを指す .compiled ファイルを生成します。これらのファイルの単一ファイル バージョンは出力先にそのままコピーされます。

アセンブリと .compiled ファイルは Bin フォルダに書き込まれます。

.asmx、.ashx

コンパイルせずにファイルをそのままコピーします。

コピー元と同じ構造です。

App_Code フォルダ内のファイル

Web.config の設定に応じて、単数または複数のアセンブリを生成します。

Bb398860.alert_note(ja-jp,VS.90).gifメモ :
App_Code フォルダ内の静的コンテンツは、出力先フォルダにコピーされません。

Bin フォルダ

App_Code フォルダに存在しない .cs ファイルと .vb ファイル

ファイルに依存するページまたはリソースと一緒にコンパイルします。

Bin フォルダ

Bin フォルダ内の既存の .dll ファイル

ファイルをそのままコピーします。

Bin フォルダ

リソース (.resx) ファイル

App_GlobalResources フォルダ内の .resx ファイルの場合、1 つまたは複数のアセンブリと 1 つのカルチャ構造体を生成します。

App_LocalResources フォルダ内の .resx ファイルの場合、出力場所の App_LocalResources フォルダにファイルをそのままコピーします。

アセンブリは Bin フォルダに配置されます。

App_Themes フォルダおよびサブフォルダ内のファイル

ファイルをそのままコピーします。

コピー元と同じ構造です。

静的ファイル (.htm、.html、.js、グラフィックス ファイルなど)

ファイルをそのままコピーします。

コピー元と同じ構造です。

ブラウザ定義ファイル

ファイルをそのままコピーします。

Bb398860.alert_note(ja-jp,VS.90).gifメモ :
ブラウザ情報はマシンレベルの構成ファイルから継承されるため、出力先のサーバーでは動作が異なる可能性があります。

App_Browsers フォルダ

依存プロジェクト

依存プロジェクトの出力をアセンブリに生成します。

Bin フォルダ

Web.config ファイル

ファイルをそのままコピーします。

コピー元と同じ構造です。

Global.asax ファイル

アセンブリを生成します。

Bin フォルダ

.compiled ファイル

ASP.NET Web アプリケーションの実行可能ファイルの場合、コンパイラは .compiled というファイル名拡張子をアセンブリとファイルの名前に追加します。アセンブリ名はコンパイラによって生成されます。.compiled ファイルには、実行可能なコードが含まれません。代わりに、ASP.NET で適切なアセンブリを検索するために必要な情報のみが含まれます。

プリコンパイル済みのアプリケーションを配置すると、ASP.NET は、Bin フォルダ内のアセンブリを使用して要求を処理します。プリコンパイルの出力には、.aspx ファイルまたは .asmx ファイルがページのプレースホルダとして含まれます。これらのプレースホルダ ファイルにはコードがありません。これらは、特定のページ要求に対して ASP.NET を呼び出すためだけに存在します。また、プレースホルダ ファイルは、ファイルのアクセス許可を設定してページへのアクセスを制限できる方法も提供します。

プリコンパイルされた Web サイトの更新

プリコンパイルされた Web サイトを配置した後で、サイト内のファイルに一定の変更を加えることができます。ファイルに対して可能な各種の変更を次の表に示します。

[ファイルの種類]

可能な変更 (配置のみ)

可能な変更 (配置と更新)

静的ファイル (.htm、.html、.js、グラフィックス ファイルなど)

静的ファイルは、変更、削除、および追加が可能です。ただし、変更または削除されたページやページ要素を ASP.NET Web ページが参照した場合は、エラーが発生することがあります。

静的ファイルは、変更、削除、および追加が可能です。ただし、変更または削除されたページやページ要素を ASP.NET Web ページが参照した場合は、エラーが発生することがあります。

.aspx ファイル

既存のページは変更できません。また、新規の .aspx ファイルを追加できません。

.aspx ファイルのレイアウトを変更できます。また、コードを必要としない要素 (イベント ハンドラを含まない HTML 要素や ASP.NET サーバー コントロールなど) を追加できます。初回要求時にコンパイルされる新規の .aspx ファイルも追加できます。

.skin ファイル

変更も新規の .skin ファイルも無視されます。

変更可能で、新規の .skin ファイルを追加できます。

Web.config ファイル

.aspx ファイルのコンパイルに影響する変更が可能です。デバッグおよびバッチ用のコンパイル オプションは無視されます。

プロファイル プロパティやプロバイダ要素は変更できません。

サイトまたはページのコンパイルに影響しない変更であれば可能です。これには、コンパイラの設定、信頼レベル、およびグローバリゼーションが含まれます。コンパイルに影響する変更やコンパイルされたページの動作の変更は無視され、場合によってはエラーが発生する可能性があります。それ以外の変更は可能です。

ブラウザ定義

変更可能で、新規のファイルを追加できます。

変更可能で、新規のファイルを追加できます。

リソース (.resx) ファイルからコンパイルされたアセンブリ

新規のリソース アセンブリ ファイルを、グローバルおよびローカルのリソースとして追加できます。

新規のリソース アセンブリ ファイルを、グローバルおよびローカルのリソースとして追加できます。

コード例

方法 : ASP.NET Web サイトを配置のためにプリコンパイルする

方法 : プリコンパイルされた Web サイトのアセンブリに署名する

方法 : プリコンパイルされた Web サイトのバージョン付きアセンブリを作成する

方法 : ASP.NET コンパイル ツールで固定名を生成する

方法 : 公開する Web サイトを構成する

ページのトップへ

参照

参照

ASP.NET コンパイル ツール (Aspnet_compiler.exe)

ページのトップへ