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

作成者: 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.vb コードは格納されます。

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

Protected Sub Page_Load(ByVal sender As Object, ByVal e As  System.EventArgs) Handles Me.Load
    TimeLabel.Text =  "The time at the beep is: " & DateTime.Now.ToString()
End Sub

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

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

使用するコンパイル モデルに関係なく、すべての ASP.NET ページ (ファイル) のマークアップ部分を WebPage.aspx 運用環境にコピーする必要があります。 明示的なコンパイルでは、 フォルダー内 Bin のアセンブリをコピーする必要がありますが、ASP.NET ページのコード部分 (ファイル) をコピーする WebPage.aspx.vb 必要はありません。 自動コンパイルでは、コードが存在し、ページにアクセスしたときに自動的にコンパイルできるように、コード部分ファイルをコピーする必要があります。 各 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.vbのクラス ファイル。 このクラスは、サイト マップ内のページの 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 ファイル Styles によってスペルが指定されたカスケード スタイル シートルールを使用して定義され、包括的なページ レイアウトはマスター ページ Site.masterで定義されています。

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

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

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

Note

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

このチュートリアルのダウンロードには、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.vbAbout.aspx.vbなど) と クラスがBasePage.vb含まれます。 結果のアセンブリには という名前が付 BookReviewsWAP.dll けられ、アプリケーションの Bin ディレクトリに配置されます。

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

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

図 2: ソリューション エクスプローラーは、Web アプリケーション プロジェクトを構成するファイルの一覧です

Note

図 2 に示すように、ASP.NET ページの分離コード ファイルは、Visual Basic Web アプリケーション プロジェクトのソリューション エクスプローラーには表示されません。 ページの分離コード クラスを表示するには、ソリューション エクスプローラーでページを右クリックし、[コードの表示] を選択します。

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

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

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

Note

図 2 に示すように、 BasePage クラスは プロジェクト内のクラス ファイルとして実装され、 という名前 HelperClassesのフォルダーに配置されます。 プロジェクトがコンパイルされると、ファイル内の BasePage.vb コードが、ASP.NET ページの分離コード クラスと共に 1 つのアセンブリ BookReviewsWAP.dllにコンパイルされます。 ASP.NET には、 という名前 App_Code の特別なフォルダーがあり、Web サイト プロジェクトのクラス ファイルを保持するように設計されています。 フォルダー内の 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.vbクラス ファイルもコピーする必要があります。 BasePage.vbファイルは フォルダー内にありApp_Code、これは、クラス ファイル用の Web サイト プロジェクトで使用される特別な ASP.NET フォルダーです。 運用環境では特別なフォルダーを作成する必要があります。また、開発環境のフォルダー内の App_Code クラス ファイルも運用環境のフォルダーにコピーする App_Code 必要があります。

ASP.NET マークアップ ファイルとソース コード ファイルのコピーに加えて、クライアント側のサポート ファイル (イメージと CSS ファイル) と、他のサーバー側サポート ファイルと Web.configWeb.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 ホスト プロバイダーにデプロイする準備ができました。

プログラミングに満足!

もっと読む

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