配置が必要なファイルを決定する (C#)

作成者: Scott Mitchell

PDF のダウンロード

開発環境から運用環境に展開する必要があるファイルは、ASP.NET アプリケーションが Web サイト モデルと Web アプリケーション モデルのどちらを使用してビルドされたかによって異なります。 これら 2 つのプロジェクト モデルと、プロジェクト モデルがデプロイにどのように影響するかについて説明します。

はじめに

ASP.NET Web アプリケーションを展開するには、ASP.NET 関連ファイルを開発環境から運用環境にコピーする必要があります。 ASP.NET 関連ファイルには、ASP.NET Web ページ マークアップとコード、クライアント側およびサーバー側のサポート ファイルが含まれます。 クライアント側のサポート ファイルとは、Web ページによって参照され、ブラウザーに直接送信されるファイル (画像、CSS ファイル、JavaScript ファイルなど) です。 サーバー側のサポート ファイルには、サーバー側で要求を処理するために使用されるものが含まれます。 これには、構成ファイル、Web サービス、クラス ファイル、型指定された DataSets、LINQ to SQL ファイルなどが含まれます。

一般に、すべてのクライアント側サポート ファイルは開発環境から運用環境にコピーする必要がありますが、コピーされるサーバー側サポート ファイルは、サーバー側コードをアセンブリ (ファイル) に明示的にコンパイルするか、 .dll またはこれらのアセンブリを自動生成しているかによって異なります。 このチュートリアルでは、コードをアセンブリに明示的にコンパイルする場合と、このコンパイル 手順を自動的に実行する場合に展開する必要があるファイルについて説明します。

明示的なコンパイルと自動コンパイル

ASP.NET Web ページは、宣言型マークアップとソース コードに分割されます。 宣言型マークアップ部分には、HTML、Web コントロール、およびデータバインド構文が含まれます。コード部分には、Visual Basic または C# コードで記述されたイベント ハンドラーが含まれています。 マークアップとコード部分は通常、異なるファイル WebPage.aspx に分離されます。宣言型マークアップが含まれるのに対し、 WebPage.aspx.cs コードは格納されます。

Text プロパティがページの読み込み時に現在の日時に設定されている Label コントロールを含む Clock.aspx という名前の ASP.NET ページについて考えてみましょう。 宣言型マークアップ部分 (の ) には Clock.aspxLabel Web コントロール<asp:Label runat="server" id="TimeLabel" /> のマークアップが含まれます。一方、コード部分 ( の ) には次の Clock.aspx.csコードを含 Page_Load むイベント ハンドラーがあります。

protected void Page_Load(object sender, EventArgs e)
{
    TimeLabel.Text =  "The time at the beep is: " + DateTime.Now.ToString();
}

ASP.NET エンジンがこのページの要求をサービスするには、ページのコード部分 (ファイル) を最初に WebPage.aspx.cs コンパイルする必要があります。 このコンパイルは、明示的または自動的に行うことができます。

コンパイルが明示的に行われると、アプリケーションのソース コード全体が、アプリケーションのディレクトリにある 1 つ以上のBinアセンブリ (.dll ファイル) にコンパイルされます。 コンパイルが自動的に行われる場合、生成される自動生成アセンブリは既定で Files フォルダーにTemporary ASP.NET配置されます。この場所は バージョン>で<%WINDOWS%\Microsoft.NET\Framework\確認できますが、 の Web.config要素を<compilation>使用して構成できます。 明示的なコンパイルでは、ASP.NET アプリケーションのコードをアセンブリにコンパイルするためのアクションを実行する必要があります。この手順は、配置前に行われます。 自動コンパイルでは、リソースに最初にアクセスしたときに、Web サーバーでコンパイル プロセスが実行されます。

使用するコンパイル モデルに関係なく、すべての ASP.NET ページ (ファイル) のマークアップ部分を WebPage.aspx 運用環境にコピーする必要があります。 明示的なコンパイルでは、フォルダー内 Bin のアセンブリをコピーする必要がありますが、ASP.NET ページのコード部分 (ファイル) をコピーする WebPage.aspx.cs 必要はありません。 自動コンパイルでは、コードが存在し、ページにアクセスしたときに自動的にコンパイルできるように、コード部分ファイルをコピーする必要があります。 各 ASP.NET Web ページのマークアップ部分には、ページに関連付けられているコードが既に明示的にコンパイルされているかどうか、または自動的にコンパイルする必要があるかどうかを示す属性を持つ ディレクティブが含 @Page まれています。 その結果、運用環境はいずれかのコンパイル モデルをシームレスに操作でき、明示的または自動コンパイルが使用されることを示すために特別な構成設定を適用する必要はありません。

表 1 に、明示的なコンパイルと自動コンパイルを使用する場合に展開するさまざまなファイルをまとめたものです。 使用されるコンパイル モデルに関係なく、そのフォルダーが存在する場合は、常にフォルダーにアセンブリを Bin 配置する必要があることに注意してください。 フォルダー Bin には、明示的なコンパイル モデルを使用する場合にコンパイルされたソース コードを含む、Web アプリケーションに固有のアセンブリが含まれています。 ディレクトリ Bin には、他のプロジェクトのアセンブリや、使用している可能性があるオープンソースまたはサードパーティ製のアセンブリも含まれており、これらは運用サーバー上に存在する必要があります。 そのため、一般的な経験則として、展開時に Bin 運用環境までフォルダーをコピーします。 (自動コンパイル モデルを使用していて、外部アセンブリを使用していない場合は、ディレクトリはありません Bin 。これで問題ありません)。

コンパイル モデル マークアップ部分ファイルをデプロイしますか? ソース コード ファイルをデプロイしますか? ディレクトリにアセンブリを Bin 配置しますか?
明示的なコンパイル はい いいえ はい
自動コンパイル はい はい はい (存在する場合)

表 1: デプロイするファイルは、使用するコンパイル モデルによって異なります。

旅行ダウンメモリレーンを取る

どのようなコンパイル方法を使用するかは、Visual Studio で ASP.NET アプリケーションを管理する方法によっても異なります。 ので。2000 年の NET の開始には、Visual Studio .NET 2002、Visual Studio .NET 2003、Visual Studio 2005、Visual Studio 2008 の 4 つの異なるバージョンがあります。 Web アプリケーション プロジェクト モデルを使用した Visual Studio .NET 2002 および 2003 マネージド ASP.NET アプリケーション。 Web アプリケーション プロジェクト モデルの主な機能は次のとおりです。

  • プロジェクトを構成するファイルは、1 つのプロジェクト ファイルで定義されます。 プロジェクト ファイルで定義されていないファイルは、Visual Studio によって Web アプリケーションの一部とは見なされません。
  • 明示的なコンパイルを使用します。 プロジェクトをビルドすると、プロジェクト内のコード ファイルが、フォルダーに配置された 1 つのアセンブリに Bin コンパイルされます。

Microsoft が Visual Studio 2005 をリリースすると、Web アプリケーション プロジェクト モデルのサポートが削除され、Web サイト プロジェクト モデルに置き換えられました。 Web サイト プロジェクト モデルは、次の方法で Web アプリケーション プロジェクト モデルと区別しました。

  • プロジェクトのファイルをスペルアウトする 1 つのプロジェクト ファイルを作成する代わりに、ファイル システムが使用されます。 つまり、Web アプリケーション フォルダー (またはサブフォルダー) 内のすべてのファイルは、プロジェクトの一部と見なされます。
  • Visual Studio でプロジェクトをビルドしても、ディレクトリにアセンブリは Bin 作成されません。 代わりに、Web サイト プロジェクトをビルドすると、コンパイル時のエラーが報告されます。
  • 自動コンパイルのサポート。 Web サイト プロジェクトは通常、マークアップとソース コードを運用環境にコピーすることによって展開されますが、コードはプリコンパイル (明示的なコンパイル) できます。

Microsoft は、Visual Studio 2005 Service Pack 1 をリリースしたときに Web アプリケーション プロジェクト モデルを復活しました。 ただし、Visual Web Developer は引き続き Web サイト プロジェクト モデルのみをサポートしています。 良いニュースは、この制限が Visual Web Developer 2008 Service Pack 1 で削除されたことです。 現在、Web アプリケーション プロジェクト モデルまたは Web サイト プロジェクト モデルを使用して、Visual Studio (および Visual Web Developer) で ASP.NET アプリケーションを作成できます。 どちらのモデルにも長所と短所があります。 2 つのモデル の比較については、「Web アプリケーション プロジェクトの概要: Web サイト プロジェクトと Web アプリケーション プロジェクト の比較」を参照してください。また、状況に最適なプロジェクト モデルを決定するのに役立ちます。

サンプル Web アプリケーションの探索

このチュートリアルのダウンロードには、ブック レビューと呼ばれる ASP.NET アプリケーションが含まれています。 この Web サイトは、誰かがオンライン コミュニティと書籍レビューを共有するために作成する可能性がある趣味の Web サイトを模倣しています。 この ASP.NET Web アプリケーションは非常にシンプルで、次のリソースで構成されています。

  • Web.config、アプリケーションの構成ファイル。

  • マスター ページ (Site.master)。

  • 7 つの異なる ASP.NET ページ:

    • ~/Default.aspx- サイトのホームページ。

    • ~/About.aspx - [サイトについて] ページ。

    • ~/Fiction/Default.aspx - レビューされた架空の書籍を一覧表示するページ。

      • ~/Fiction/Blaze.aspx - リチャード・バッハマンの小説「 ブレイズ」のレビュー。
    • ~/Tech/Default.aspx - レビューされたテクノロジ ブックの一覧を示すページ。

      • ~/Tech/CYOW.aspx- 独自の Web サイトの作成に関するレビュー。
      • ~/Tech/TYASP35.aspx - 24 時間で 3.5 ASP.NET 自分を教えるのレビュー。
  • Styles フォルダー内の 3 つの異なる CSS ファイル。

  • 4 つの画像ファイル - ASP.NET ロゴと 3 つのレビューされた書籍の表紙の画像 - すべてフォルダーにあります Images

  • Web.sitemapサイト マップを定義し、ルート ディレクトリFictionTechとフォルダーのページにメニューをDefault.aspx表示するために使用されるファイル。

  • 基底Pageクラスを定義する という名前BasePage.csのクラス ファイル。 このクラスは、サイト マップ内のページの Page 位置に基づいてプロパティを Title 自動的に設定することで、 クラスの機能を拡張します。 簡単に言うと、(ではなくSystem.Web.UI.Page) を拡張BasePageする ASP.NET 分離コード クラスのタイトルは、サイト マップ内の位置に応じて値に設定されます。 たとえば、~/Tech/CYOW.aspx ページを表示すると、タイトルは "Home : Technology : Create Your Own Website" に設定されます。

図 1 は、ブラウザーを介して表示されたブック レビュー Web サイトのスクリーン ショットを示しています。 ここには、24 時間で 3.5 ASP.NET 自ら教える本をレビューする ~/Tech/TYASP35.aspx/ ページが表示されます。 ページの上部と左側の列のメニューにまたがる階層リンクは、 で Web.sitemap定義されているサイト マップ構造に基づいています。 右上隅の画像は、フォルダーにあるブック カバー画像 Images の 1 つです。 Web サイトの外観は、[スタイル] フォルダー内の CSS ファイルによって綴られたカスケード スタイル シートルールによって定義され、一方、包括的なページ レイアウトはマスター ページ Site.masterで定義されます。

書籍レビューのウェブサイトは、タイトルの品揃えに関するレビューを提供しています

図 1: 書籍レビュー Web サイトでは、さまざまなタイトルに関するレビューが表示されます (クリックするとフルサイズの画像が表示されます)

このアプリケーションではデータベースは使用されません。各レビューは、アプリケーション内で個別の Web ページとして実装されます。 このチュートリアル (および次のいくつかのチュートリアル) では、データベースを持たない Web アプリケーションのデプロイについて説明します。 ただし、今後のチュートリアルでは、レビュー、リーダー コメント、およびその他の情報をデータベース内に格納するようにこのアプリケーションを強化し、データドリブン Web アプリケーションを正しくデプロイするために実行する必要がある手順について説明します。

Note

これらのチュートリアルでは、Web ホスト プロバイダーを使用 ASP.NET アプリケーションをホストすることに重点を置き、ASP などの補助的なトピックについては説明しません。NET のサイト マップ システムまたは基本 Page クラスを使用しています。 これらのテクノロジの詳細と、チュートリアル全体で説明されている他のトピックの背景については、各チュートリアルの最後にある「さらに読む」セクションを参照してください。

このチュートリアルのダウンロードには、Web アプリケーションの 2 つのコピーがあり、それぞれが異なる Visual Studio プロジェクトの種類として実装されています。BookReviewsWAP、Web アプリケーション プロジェクト、および Web サイト プロジェクトである BookReviewsWSP です。 どちらのプロジェクトも Visual Web Developer 2008 SP1 で作成され、ASP.NET 3.5 SP1 を使用します。 これらのプロジェクトを操作するには、まずコンテンツをデスクトップに解凍します。 Web アプリケーション プロジェクト (BookReviewsWAP) を開くには、BookReviewsWAP フォルダーに移動し、 BookReviewsWAP.slnソリューション ファイル の をダブルクリックします。 Web サイト プロジェクト (BookReviewsWSP) を開くには、Visual Studio を起動し、[ファイル] メニューの [Web サイトを開く] オプションを選択し、デスクトップ上の BookReviewsWSP フォルダーを参照して、[OK] をクリックします。

このチュートリアルの残りの 2 つのセクションでは、アプリケーションをデプロイするときに運用環境にコピーする必要があるファイルを確認します。 次の 2 つのチュートリアル ( FTP を使用したサイトの展開Visual Studio を使用したサイトの展開 ) では、これらのファイルを Web ホスト プロバイダーにコピーするさまざまな方法を示します。

Web アプリケーション プロジェクト用に配置するファイルの決定

Web アプリケーション プロジェクト モデルでは、明示的なコンパイルが使用されます。プロジェクトのソース コードは、アプリケーションをビルドするたびに 1 つのアセンブリにコンパイルされます。 このコンパイルには、ASP.NET ページの分離コード ファイル (~/Default.aspx.cs、~/About.aspx.csなど) と クラスが BasePage.cs 含まれます。 結果のアセンブリは BookReviewsWAP.dll という名前で、アプリケーションの Bin ディレクトリにあります。

図 2 は、ブック レビュー Web アプリケーション プロジェクトを構成するファイルを示しています。

ソリューション エクスプローラーには、Web アプリケーション プロジェクトを構成するファイルが一覧表示されます

図 2: ソリューション エクスプローラーには、Web アプリケーション プロジェクトを構成するファイルが一覧表示されます

Web アプリケーション プロジェクト モデルを使用して開発された ASP.NET アプリケーションをデプロイするには、まず、最新のソース コードをアセンブリに明示的にコンパイルするようにアプリケーションをビルドします。 次に、次のファイルを運用環境にコピーします。

  • ~/、~About.aspx/Default.aspxなど、すべての ASP.NET ページの宣言型マークアップを含むファイル。 また、すべてのマスター ページとユーザー コントロールの宣言型マークアップをコピーします。
  • フォルダー内のBinアセンブリ (.dll ファイル)。 プログラム データベース ファイル (.pdb) またはディレクトリ内にある XML ファイルをコピーする Bin 必要はありません。

ASP.NET ページのソース コード ファイルを運用環境にコピーする必要も、クラス ファイルをコピー BasePage.cs する必要もありません。

Note

図 2 に示すように、 BasePage クラスは プロジェクト内のクラス ファイルとして実装され、 という名前 HelperClassesのフォルダーに配置されます。 プロジェクトがコンパイルされると、ファイル内の BasePage.cs コードが ASP.NET ページの分離コード クラスと共に 1 つのアセンブリにコンパイルされます。ASP.NET には、 BookReviewsWAP.dll. Web サイト プロジェクトのクラス ファイルを保持するように設計された という名前 App_Code の特別なフォルダーがあります。 フォルダー内の App_Code コードは自動的にコンパイルされるため、Web アプリケーション プロジェクトでは使用しないでください。 代わりに、アプリケーションのクラス ファイルを、、または Classesなどの名前HelperClassesの通常のフォルダーに配置する必要があります。 または、クラス ファイルを別のクラス ライブラリ プロジェクトに配置することもできます。

ASP.NET 関連のマークアップ ファイルとアセンブリをフォルダーに Bin コピーするだけでなく、クライアント側のサポート ファイル (イメージと CSS ファイル) と、他のサーバー側サポート ファイルと Web.configWeb.sitemapもコピーする必要があります。 明示的コンパイルと自動コンパイルのどちらを使用するかに関係なく、これらのクライアント側およびサーバー側のサポート ファイルを運用環境にコピーする必要があります。

Web サイト プロジェクト ファイル用に配置するファイルの決定

Web サイト プロジェクト モデルでは、Web アプリケーション プロジェクト モデルを使用する場合に使用できない機能である自動コンパイルがサポートされています。 明示的なコンパイルでは、プロジェクトのソース コードをアセンブリにコンパイルし、そのアセンブリを運用環境にコピーする必要があります。 一方、自動コンパイルでは、ソース コードを運用環境にコピーするだけで、必要に応じてランタイムによってオンデマンドでコンパイルされます。

Visual Studio の [ビルド] メニュー オプションは、Web アプリケーション プロジェクトと Web サイト プロジェクトの両方に存在します。 Web アプリケーション プロジェクトをビルドすると、プロジェクトのソース コードがディレクトリ内 Bin の 1 つのアセンブリにコンパイルされます。Web サイト プロジェクトをビルドすると、コンパイル時エラーがチェックされますが、アセンブリは作成されません。 Web サイト プロジェクト モデルを使用して開発された ASP.NET アプリケーションを展開するには、適切なファイルを運用環境にコピーするだけで済みますが、最初にプロジェクトをビルドしてコンパイル時エラーが発生しないようにすることをお勧めします。

図 3 は、ブック レビュー Web サイト プロジェクトを構成するファイルを示しています。

ソリューション エクスプローラーには、Web サイト プロジェクトを構成するファイルが一覧表示されます

図 3: ソリューション エクスプローラーには、Web サイト プロジェクトを構成するファイルが一覧表示されます

Web サイト プロジェクトを展開するには、ASP.NET 関連のすべてのファイルを運用環境にコピーします。このファイルには、ASP.NET ページ、マスター ページ、ユーザー コントロールのマークアップ ページとそのコード ファイルが含まれます。 また、BasePage.cs などのクラス ファイルもコピーする必要があります。 ファイルは、クラス ファイルの Web サイト プロジェクトでApp_Code使用される特別な ASP.NET フォルダーである フォルダーに配置されていることBasePage.csに注意してください。 特別なフォルダーは運用環境でも作成する必要があります。また、開発環境のフォルダー内の App_Code クラス ファイルを運用環境のフォルダーにコピーする App_Code 必要があります。

ASP.NET マークアップ ファイルとソース コード ファイルのコピーに加えて、クライアント側のサポート ファイル (イメージと CSS ファイル) と、他のサーバー側サポート ファイル、 Web.config および Web.sitemapもコピーする必要があります。

Note

Web サイト プロジェクトでは、明示的なコンパイルを使用することもできます。 今後のチュートリアルでは、Web サイト プロジェクトを明示的にコンパイルする方法について説明します。

まとめ

ASP.NET アプリケーションをデプロイするには、開発環境から運用環境に必要なファイルをコピーする必要があります。 同期する必要があるファイルの正確なセットは、ASP.NET アプリケーションのコードが明示的にコンパイルされるか、自動的にコンパイルされるかによって異なります。 使用されるコンパイル戦略は、Visual Studio が Web アプリケーション プロジェクト モデルまたは Web サイト プロジェクト モデルを使用して ASP.NET アプリケーションを管理するように構成されているかどうかによって影響を受けます。

Web アプリケーション プロジェクト モデルでは、明示的なコンパイルが使用され、プロジェクトのコードが フォルダー内の 1 つのアセンブリに Bin コンパイルされます。 アプリケーションを展開するときは、ASP.NET ページのマークアップ部分とフォルダーの Bin 内容を運用環境にプッシュする必要があります。アプリケーション内のソース コード (コード ファイルや分離コード クラスなど) を運用環境にコピーする必要はありません。

Web サイト プロジェクト モデルでは既定で自動コンパイルが使用されますが、今後のチュートリアルで説明するように、Web サイト プロジェクトを明示的にコンパイルすることはできます。 自動コンパイルを使用する ASP.NET アプリケーションを展開するには、マークアップ部分 ソース コードを運用環境にコピーする必要があります。 コードは、初めて要求されたときに、運用環境で自動的にコンパイルされます。

開発環境と運用環境の間で同期する必要があるファイルを確認したので、Book Reviews アプリケーションを Web ホスト プロバイダーにデプロイする準備ができました。

幸せなプログラミング!

もっと読む

このチュートリアルで説明するトピックの詳細については、次のリソースを参照してください。