チーム開発用に複数のプロジェクトから ASP.NET アプリケーションを作成する方法


概要


この資料では、複数の ASP.NET プロジェクトを 1 つの Web アプリケーションにする方法について説明します。

大規模な ASP.NET Web アプリケーション プロジェクトを Microsoft Visual Studio .NET で開発する際には、複数のプロジェクトに分割すると便利な場合があります。 マイクロソフトでは、すべての状況で Microsoft Visual SourceSafe などのソース コントロール ソフトウェアの使用を推奨しています。

大規模な Web サイトの開発には、多くの場合、複数の開発者が参加します。 これらの開発者は、Web アプリケーションの特定の部分を互いに干渉することなく作業できる必要がある一方、プロジェクトの進捗に従って互いの作業内容を使用できなければなりません。 これを実現するには、Visual Studio .NET ソリューションで単一のプロジェクトを使用する方法があります。 また、開発が容易な単位に開発プロジェクトを分割することによって、Web アプリケーションを複数のプロジェクトに分けることも可能です。

Web アプリケーションの開発は、単一プロジェクトまたはマルチ プロジェクトの Visual Studio .NET ソリューションで行うことができます。 それぞれの方法の利点と欠点については簡単に後述します。

必要条件

必要なハードウェア、ソフトウェア、ネットワーク インフラストラクチャ、および Service Pack は、次のとおりです。

  • Microsoft Windows 2000 Professional、Microsoft Windows 2000 Server、Microsoft Windows 2000 Advanced Server、または Microsoft Windows XP Professional
  • Microsoft インターネット インフォメーション サービス (IIS)
  • Microsoft .NET Framework
  • Microsoft Visual Studio .NET
この資料は、次のトピックについて詳しい知識のあるユーザーを対象としています。

  • Visual Studio .NET Web アプリケーションの作成

単一プロジェクトを使用する方法

小規模から中規模の Web アプリケーションの場合は、単一プロジェクトを使用する方法をお勧めします。 Visual Studio .NET は、この方法を直接サポートしています。 この方法では、Web アプリケーション全体が単一の ASP.NET Web アプリケーション プロジェクトとしてビルドされます。 チームの各メンバは、プロジェクト全体のコピーを開発用コンピュータにダウンロードし、アプリケーションの各部の開発を行います。 プロジェクトを構成するファイルに対するチーム メンバの作業内容を取りまとめるには、ソース コントロール ソフトウェアを使用する必要があります。

単一プロジェクトを使用する方法には、以下のような利点があります。

  • この方法は、実装が容易です。 Visual Studio .NET で単一の Web アプリケーション プロジェクトを作成し、これにアプリケーション アイテムを追加します。
  • 小規模な Web アプリケーションでは、単一の Visual Studio .NET プロジェクトの方が管理が容易です。
  • Visual Studio .NET は、この方法を直接サポートしています。 この方法を使用するのに特別な手順は必要ありません。
  • プロジェクト全体が単一のアセンブリにビルドされるため、複数のアセンブリ間の参照は必要ありません。
単一プロジェクトを使用する方法には、以下のような欠点があります。

  • 大規模な Web アプリケーションは、1 つの単位として管理するのが困難です。
  • 作業内容をビルドするためには、わずかなコード変更であっても、その都度プロジェクト全体をビルドする必要があります。 大規模なプロジェクトでは、多くの時間が必要となり、開発の効率が低下する可能性があります。

複数プロジェクトを使用する方法

Web アプリケーションを複数の Visual Studio .NET プロジェクトに分割すると、大規模な Web アプリケーションの開発の管理が容易になる場合があります。 大規模な開発プロジェクトを小さなプロジェクトに分割することによって、プロジェクト単位で管理やビルドを行うことができます。 チームのメンバは、別々のプロジェクトで作業を行うことによって、Web アプリケーションの別々の部分に対して作業を行うことができます。 この方法を使用する場合も、プロジェクト ファイルに対する作業内容を取りまとめるには、ソース コントロール ソフトウェアを使用する必要があります。

Visual Studio .NET では、この方法を直接サポートしていません。これは、Visual Studio .NET Web プロジェクトが常に専用の IIS アプリケーション ルート ディレクトリに専用のアセンブリと共に作成されるためです。 IIS Web アプリケーションは、複数の IIS アプリケーション ルート ディレクトリにまたがることはできません。

さらに、Visual Studio .NET では、あるルート ディレクトリ内のリソースを他のルート ディレクトリから使用することができません。 アプリケーション間でリソースを共有できない場合、複数のプロジェクトから単一のアプリケーションを作成するのは困難です。

この問題を解決するには、この資料の「複数の Visual Studio .NET プロジェクトを 1 つの Web アプリケーションにする方法」に記載されている手順を使用して、複数の Visual Studio プロジェクトが同じ IIS アプリケーション ルート ディレクトリを共有するようにします。

複数プロジェクトを使用する方法には、以下のような利点があります。

  • 大規模な Web アプリケーションは、より小さい単位で管理する方が簡単です。
  • 各プロジェクトを、他のプロジェクトとは別にビルドすることができます。これにより、開発中のビルド時間が短縮されます。
  • 大規模な Web アプリケーションを論理的な単位に分割し、これらの単位でコントロールなどの共通リソースを共有することができます。
複数プロジェクトを使用する方法には、以下のような欠点があります。

  • Visual Studio .NET では、この方法を直接サポートしていません。 追加の手順を実行し、別々の Visual Studio .NET プロジェクトを同じ Web アプリケーションに参加させる必要があります。
  • 互いのリソースにアクセスするアセンブリには、相互に参照を設定する必要があります。 Visual Studio .NET では、循環参照は使用できません。
  • この方法は、小規模な Web アプリケーションには適していません。 小規模な Web アプリケーションで複数のプロジェクトを使用すると、単一のプロジェクトを使用するよりも管理が複雑になります。

複数の Visual Studio .NET プロジェクトを 1 つの Web アプリケーションにする方法

Visual Studio .NET プロジェクトを 1 つの Web アプリケーションにするには、これらのプロジェクトで同じ IIS アプリケーション ルート ディレクトリを共有する必要があります。 Visual Studio .NET では、Web プロジェクトがそれぞれ専用のアプリケーション ルート ディレクトリ内に作成されます。 このため、これらを別々に構成する必要があります。

Visual Studio .NET プロジェクトを同じ Web アプリケーションに参加させるためには、4 つの主要な手順をすべて行う必要があります。

  1. アプリケーション全体のルート ディレクトリとなるディレクトリに、メイン プロジェクトを作成します。
  2. 同じ Visual Studio .NET ソリューション内で、ルート ディレクトリのサブディレクトリの中に子プロジェクトを作成します。
  3. 各子プロジェクトについて、Visual Studio .NET が IIS を介して作成した Web アプリケーションを削除します。

    注: Visual Studio .NET では、同じ物理ディレクトリの中で複数の Web アプリケーションの作成や作業を行うことができないため、アプリケーションを構成する各種のプロジェクトを異なるディレクトリに作成する必要があります。
  4. プロジェクトを個々の開発用コンピュータに展開するには、アプリケーションのディレクトリ構造をこれらのコンピュータにコピーした後、メイン プロジェクト ディレクトリとして使用する IIS アプリケーション ルート ディレクトリを作成します。

IIS アプリケーション ルート プロジェクトを作成する

Web アプリケーション用の IIS アプリケーション ルート プロジェクトを作成するには、以下の手順を実行します。

  1. Visual Studio .NET を起動します。
  2. [ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。
  3. [新しいプロジェクト] ダイアログ ボックスの [プロジェクトの種類] で使用する言語をクリックし、[テンプレート] で [ASP.NET Web アプリケーション] をクリックします。
  4. [場所] ボックスで、デフォルトの名前 WebApplication#MainWeb に置き換えます。 ローカル サーバーを使用している場合は、サーバー名 http://localhost をそのまま使用できます。 [場所] ボックスの内容は、次のようになります。
    http://localhost/MainWeb

子プロジェクトを作成する

子プロジェクトを作成するには、次の手順を実行します。

  1. 各子プロジェクトについて、ソリューション エクスプローラ ウィンドウでソリューションを右クリックし、[追加] をポイントして、[新しいプロジェクト] をクリックします。
  2. [新しいプロジェクトの追加] ダイアログ ボックスで、[テンプレート] の [ASP.NET Web アプリケーション] をクリックします。
  3. [場所] ボックスに、http://localhost/MainWeb/<subwebname> と入力します。 これによって、ルート アプリケーション ディレクトリのサブディレクトリの中に <subwebname> という名前の子プロジェクトが作成されます。
  4. [OK] をクリックします。
  5. アプリケーション ルート ディレクトリ以外では必要のないファイルを、プロジェクトからすべて削除します。 具体的には、Global.asax ファイルと Web.config ファイルを削除します。 これで、この子プロジェクトは、メイン プロジェクトの Global.asax および Web.config に依存するようになります。
  6. 子プロジェクトに、ユーザー コントロールなどの共有リソースのみが含まれる場合は、WebForm1.aspx ファイルを削除します。
  7. ソリューションをビルドします。

子プロジェクトに対応する IIS アプリケーションを削除する

子プロジェクトに対応する IIS アプリケーションを削除するには、以下の手順を実行します。

  1. [スタート] ボタンをクリックし、[プログラム] (または Windows XP の [すべてのプログラム])、[管理ツール] の順にポイントして、[インターネット サービス マネージャ] をクリックします。
  2. メインの Web アプリケーションと、削除する子 Web プロジェクトを探します。
  3. 各子プロジェクトについて、Web アプリケーション ノードを右クリックし、[プロパティ] をクリックします。
  4. [ディレクトリ] タブで、[削除] をクリックし、[OK] をクリックします。

    重要: [削除] をクリックしないでください。 これをクリックすると、対応するファイル ディレクトリおよびプロジェクト ファイルが完全に削除されます。
共通の IIS アプリケーション ルート ディレクトリを共有するように子プロジェクトを構成すると、ソリューション内のプロジェクト間でリソースを共有できるようになります。 たとえば、共有リソース プロジェクトから別のプロジェクトの .aspx ファイルにユーザー コントロールをドラッグできます。 これは、共通の IIS アプリケーション ルートを共有するようにプロジェクトを構成した後にのみ実行できます。 プロジェクトが別々の IIS アプリケーション ルート ディレクトリ内にある間は、Visual Studio .NET ではリソースを共有できません。

子プロジェクトへの参照を設定する

メインの Web アプリケーションにすべての子プロジェクトに対する参照を追加するには、以下の手順を実行します。

  1. メインの Web アプリケーションのソリューション エクスプローラで、[参照設定] を右クリックし、[参照の追加] をクリックします。
  2. [参照の追加] ダイアログ ボックスの [プロジェクト] タブをクリックします。
  3. 子プロジェクトを選択し、[OK] をクリックします。
子プロジェクトへの参照を設定した後、ソリューションをビルドすると、子プロジェクト アセンブリがメイン アプリケーションの Bin ディレクトリにコピーされます。 これにより、子プロジェクト内に定義されたコンポーネントのデバッグおよび使用が可能になります。

マルチ プロジェクト アプリケーションを開発用コンピュータに展開する

マルチ プロジェクト Web アプリケーションを開発用コンピュータに展開するには、Web アプリケーションのルートを表すメイン (ルート) プロジェクトと共に、作業を行うすべての子アプリケーションをコピーします。 メイン プロジェクト ディレクトリを、IIS Web アプリケーションのルートにする必要があります。

展開には多くのオプションがありますが、各オプションについての説明はこの資料では扱いません。 一例を挙げると、大規模な Web アプリケーションでは、多数のソース ファイルのコピーを回避するために、一部のソース ファイルのビルド済みバージョンを展開することができます。 ローカル プロジェクトへの参照はすべてプロジェクト参照でなければなりません。 別のプロジェクトから ASP.NET ユーザー コントロールを Web フォーム上にドラッグする場合には、そのユーザー コントロールを含むプロジェクトが、コンピュータ上の同じソリューションの中に存在している必要があります。

小規模な ASP.NET Web アプリケーションでは、すべてのプロジェクトを組み合わせることができます。 これを行うには、Visual Studio .NET で、[プロジェクト] メニューの [プロジェクトのコピー] をクリックします。 プロジェクト ファイルをコンピュータにコピーすることもできます。

マルチ プロジェクト Web アプリケーションを開発用コンピュータに展開するには、以下の手順を実行します。

  1. 上記の手順で作成したディレクトリ構造全体を、開発用コンピュータにコピーします。
  2. ルート プロジェクトを含むディレクトリを IIS アプリケーション ルートに設定します。 次のように、ファイル システムのエクスプローラを使用するのが最も簡単な方法です (NTFS ファイル システムを使用している場合)。
    1. ファイル システム エクスプローラで、Web アプリケーションのルート ディレクトリを探します。
    2. ディレクトリを右クリックし、[プロパティ] をクリックします。
    3. [プロパティ] ダイアログ ボックスで、[Web 共有] タブをクリックし、[このフォルダを共有する] をクリックします。
    4. [エイリアス] ボックスに Web アプリケーションの名前を入力し、[OK] をクリックします。
    5. [OK] をクリックして [プロパティ] を閉じます。
  3. Web アプリケーションを使用するすべてのユーザー ID (IUSR アカウントなど) がこのディレクトリへのアクセス許可を持つことを確認します。
  4. ソリューションをビルドします。