次の方法で共有


Web アプリケーション プロジェクトのビルドとパッケージ化

作成者: Jason Lee

Web アプリケーション プロジェクトをリモート サーバー環境に配置する場合、最初のタスクはプロジェクトをビルドし、Web 配置パッケージを生成することです。 このトピックでは、Web アプリケーション プロジェクトのビルド プロセスのしくみについて説明します。 特に、次の内容について説明します。

  • Web 発行パイプライン (WPP) によってビルド プロセスが拡張され配置機能が追加されるしくみ。
  • インターネット インフォメーション サービス (IIS) の Web 配置ツール (Web 配置) によって Web アプリケーションが配置パッケージに変換されるしくみ。
  • ビルドおよびパッケージ化のプロセスのしくみと、作成されるファイル。

Visual Studio 2010 では、Web アプリケーション プロジェクトのビルドと配置プロセスが WPP によってサポートされています。 WPP は、MSBuild の機能を拡張し、Web 配置との統合を可能にする一連の Microsoft Build Engine (MSBuild) ターゲットを提供します。 Visual Studio 内では、Web アプリケーション プロジェクトのプロパティ ページでこの拡張機能を確認できます。 [Web のパッケージ化/公開] ページと [SQL のパッケージ化/公開] ページを使用すると、ビルド プロセスが完了したときに Web アプリケーション プロジェクトを配置用にパッケージ化する方法を構成することができます。

The Package/Publish Web page, together with the Package/Publish S Q L page, lets you configure how your web application project is packaged for deployment when the build process is complete.

WPP のしくみ

C# ベースの Web アプリケーション プロジェクトのプロジェクト ファイルを見ると、2 つの .targets ファイルがインポートされていることがわかります。

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\
                 v10.0\WebApplications\Microsoft.WebApplication.targets" />

最初の Import ステートメントは、すべての Visual C# プロジェクトに共通です。 このファイル Microsoft.CSharp.targets には、Visual C# に固有のターゲットとタスクが含まれています。 たとえば、C# コンパイラ (Csc) タスクがここで呼び出されます。 Microsoft.CSharp.targets ファイルは、Microsoft.Common.targets ファイルをインポートします。 これにより、BuildRebuildRunCompileClean など、すべてのプロジェクトに共通するターゲットが定義されます。 2 番目の Import ステートメントは、Web アプリケーション プロジェクトに固有です。 次に、Microsoft.WebApplication.targets ファイルは Microsoft.Web.Publishing.targets ファイルをインポートします。 Microsoft.Web.Publishing.targets ファイルは基本的に WPP "です"。 これは、さまざまな配置タスクを完了するために Web 配置を呼び出すターゲット (PackageMSDeployPublish など) を定義します。

これらの追加ターゲットの使用方法を理解するには、Contact Manager サンプル ソリューションで Publish.proj ファイルを開き、BuildProjects ターゲットを確認します。

<Target Name="BuildProjects" Condition=" '$(BuildingInTeamBuild)'!='true' ">
  <MSBuild Projects="@(ProjectsToBuild)"
           Properties="OutDir=$(OutputRoot);
                       Configuration=$(Configuration);
                       DeployOnBuild=true;
                       DeployTarget=Package"
           Targets="Build" />
</Target>

このターゲットは、MSBuild タスクを使用してさまざまなプロジェクトをビルドします。 DeployOnBuild および DeployTarget プロパティに注目してください。

  • DeployOnBuild=true プロパティは、基本的に "ビルドが正常に完了したときに追加のターゲットを実行する" ことを意味します。
  • DeployTarget プロパティは、DeployOnBuild プロパティが true の場合に実行するターゲットの名前を識別します。 この場合は、プロジェクトのビルド後に MSBuild で Package ターゲットを実行するように指定します。

Package ターゲットは、Microsoft.Web.Publishing.targets ファイルで定義されます。 基本的に、このターゲットは Web アプリケーション プロジェクトのビルド出力を受け取り、IIS Web サーバーに公開可能な Web 配置パッケージに変換します。

Note

Visual Studio 2010 でプロジェクト ファイル (たとえば、ContactManager.Mvc.csproj) を表示するには、まずソリューションからプロジェクトをアンロードする必要があります。 [ソリューション エクスプローラー] ウィンドウで、プロジェクト ノードを右クリックし、[プロジェクトのアンロード] をクリックします。 プロジェクト ノードを再度右クリックし、[[プロジェクト ファイル] の編集] をクリックします。 プロジェクト ファイルは生の XML 形式で開きます。 完了したら、忘れずにプロジェクトを再読み込みしてください。
MSBuild ターゲット、タスク、および Import ステートメントの詳細については、「プロジェクト ファイルについて」を参照してください。 プロジェクト ファイルと WPP の詳細については、書籍『Inside the Microsoft Build Engine: Using MSBuild and Team Foundation Build』(Sayed Ibrahim Hashimi、William Bartholomew 共著、ISBN: 978-0-7356-4524-0) を参照してください。

Web 配置パッケージとは

Visual Studio 2010 を使用するか MSBuild を直接使用して、Web アプリケーション プロジェクトをビルドして配置すると、通常、最終的な結果は "Web 配置パッケージ" になります。 Web 配置パッケージは、.zip ファイルです。 これには、Web アプリケーションを再作成するために IIS と Web 配置に必要な次のものがすべて含まれています。

  • コンテンツ、リソース ファイル、構成ファイル、JavaScript、カスケード スタイル シート (CSS) リソースなど、Web アプリケーションのコンパイル済み出力。
  • Web アプリケーション プロジェクト用、およびソリューション内の参照先プロジェクト用のアセンブリ。
  • Web アプリケーションと共に配置するデータベースを生成する SQL スクリプト。

Web 配置パッケージが生成されたら、さまざまな方法で IIS Web サーバーに公開できます。 たとえば、配置先 Web サーバー上の Web 配置リモート エージェント サービスまたは Web 配置ハンドラーを対象にしてリモートで配置したり、IIS マネージャーを使用して配置先 Web サーバーにパッケージを手動でインポートしたりすることができます。 配置に対するこれらの手法の詳細については、「適切な Web 配置手法を選択する」を参照してください。

ビルド プロセスのしくみ

これは、Web アプリケーション プロジェクトをビルドしてパッケージ化すると何が起こるかを示しています。

What happens when you build and package a web application project.

Web アプリケーション プロジェクトをビルドすると、ビルド プロセスによって "[プロジェクト名].SourceManifest.xml" という名前のファイルが生成されます。 この .SourceManifest.xml ファイルは、プロジェクト ファイルおよびビルド出力とともに、Web 配置パッケージに含める必要があるものを Web 配置に伝えます。 これらの入力を使用して、Web 配置は "[プロジェクト名].zip" という名前の Web 配置パッケージを生成します。

ビルド プロセスでは、Web 配置パッケージの他に、パッケージの使用に役立つ 2 つのファイルが生成されます。

  • .deploy.cmd ファイルには、Web 配置パッケージをリモート IIS Web サーバーに公開する、パラメーター化された Web 配置 (MSDeploy.exe) コマンドのセットが含まれています。 適切なパラメーターを使用して .deploy.cmd ファイルを実行すると、通常、MSDeploy.exe コマンドを手動で構築するよりも迅速かつ簡単に実行できます。
  • SetParameters.xml ファイルは、MSDeploy.exe コマンドに一連のパラメーター値を提供します。 これらの値には、パッケージを配置する IIS Web アプリケーションの名前、web.config ファイルで定義されているサービス エンドポイントと接続文字列の値、プロジェクトのプロパティ ページで定義されている配置プロパティの値などのプロパティが含まれます。

SetParameters.xml ファイルは、配置プロセスを管理するための鍵となります。 このファイルは、Web アプリケーション プロジェクトの内容に応じて動的に生成されます。 たとえば、web.config ファイルに接続文字列を追加すると、ビルド プロセスによって接続文字列が自動的に検出され、それに応じて配置がパラメーター化され、SetParameters.xml ファイルにエントリが作成され、配置プロセスの一部として接続文字列を変更できるようになります。 次のトピック「Web パッケージ配置のパラメーターを構成する」では、このファイルの役割についてさらに詳しく説明し、ビルドおよび配置中にこのファイルを変更できるさまざまな方法について説明します。

Note

Visual Studio 2010 では、WPP はパッケージ化前の Web アプリケーション内のページのプリコンパイルをサポートしていません。 次のバージョンの Visual Studio と WPP には、パッケージ化オプションとして Web アプリケーションをプリコンパイルする機能が含まれています。

まとめ

このトピックでは、Visual Studio 2010 の Web アプリケーション プロジェクトのビルドおよびパッケージ化プロセスの概要について説明しました。 WPP を使用して MSBuild から Web 配置のコマンドを呼び出す方法と、ビルドとパッケージ化のプロセスのしくみについて説明しました。

Web 配置パッケージを作成したら、次の手順ではそれを配置します。 これに関する詳細については、「Web パッケージ配置のパラメーターを構成する」と「Web パッケージを配置する」を参照してください。

もっと読む

このチュートリアルの次のトピック「Web パッケージ配置のパラメーターを構成する」および「Web パッケージを配置する」では、作成した Web パッケージの使用方法に関するガイダンスを提供します。 このシリーズの最後のチュートリアル「高度なエンタープライズ Web 配置」では、パッケージ化プロセスをカスタマイズしてトラブルシューティングする方法に関するガイダンスを提供します。

プロジェクト ファイルと WPP の詳細については、書籍『Inside the Microsoft Build Engine: Using MSBuild and Team Foundation Build』(Sayed Ibrahim Hashimi、William Bartholomew 共著、ISBN: 978-0-7356-4524-0) を参照してください。