建置及封裝 Web 應用程式專案

作者:Jason Lee

當您想要將 Web 應用程式專案部署至遠端伺服器環境時,您的第一個工作是建置專案並產生 Web 部署套件。 本主題描述建置程式如何適用于 Web 應用程式專案。 特別是,它會說明:

  • Web 發佈管線 (WPP) 如何擴充建置程式以包含部署功能。
  • Internet Information Services 如何 (IIS) Web 部署工具 (Web Deploy) 將您的 Web 應用程式轉換成部署套件。
  • 建置和封裝程式的運作方式,以及建立哪些檔案。

在 Visual Studio 2010 中,WPP 支援 Web 應用程式專案的建置和部署程式。 WPP 提供一組Microsoft Build Engine (MSBuild) 目標,可擴充 MSBuild 的功能,並讓它與 Web Deploy 整合。 在 Visual Studio 中,您可以在 Web 應用程式專案的屬性頁面上看到此擴充功能。 套件/發佈網頁套件/發佈 SQL頁面一起,可讓您設定 Web 應用程式專案在建置程式完成時封裝部署的方式。

套件/發佈網頁與套件/發佈 S Q L 頁面一起,可讓您設定 Web 應用程式專案在建置程式完成時封裝部署的方式。

WPP 如何運作?

如果您查看以 C# 為基礎的 Web 應用程式專案的專案檔,您可以看到它會匯入兩個 .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檔案。 這會定義所有專案通用的目標,例如 置、 重建執行編譯清除。 第二個 Import 語句是 Web 應用程式專案特有的。 Microsoft.WebApplication.targets檔案接著會匯入Microsoft.Web.Publishing.targets檔案。 Microsoft.Web.Publishing.targets檔案基本上WPP。 它會定義叫用 Web Deploy 以完成各種部署工作的目標,例如 PackageMSDeployPublish

若要瞭解如何使用這些額外的目標,請在連絡人管理員範例解決方案中開啟 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 工作來建置各種專案。 請注意 DeployOnBuildDeployTarget 屬性:

  • DeployOnBuild=true屬性基本上表示「我想要在建置成功完成時執行其他目標」。
  • DeployTarget屬性可識別當DeployOnBuild屬性等於true時所要執行的目標名稱。 在此情況下,您會指定您希望 MSBuild 在建置專案之後執行 套件 目標。

套件目標定義于Microsoft.Web.Publishing.targets檔案中。 基本上,此目標會採用 Web 應用程式專案的組建輸出,並將其轉換成可發佈至 IIS Web 服務器的 Web 部署套件。

注意

若要檢視專案檔 (例如,在 Visual Studio 2010 中 ,ContactManager.Mvc.csproj) ,您必須先從方案卸載專案。 在[方案總管]視窗中,以滑鼠右鍵按一下專案節點,然後按一下 [卸載專案]。 再次以滑鼠右鍵按一下專案節點,然後按一下 [ 編輯[專案檔]) 。 專案檔將會在其原始 XML 表單中開啟。 請記得在完成時重載專案。
如需 MSBuild 目標、工作和 Import 語句的詳細資訊,請參閱 瞭解專案檔。 如需專案檔和 WPP 的更深入簡介,請參閱在Microsoft Build Engine內:使用 MSBuild 和 Team Foundation Build by Sayed Ibimiim Hashimi 和 William Bartholomew,ISBN:978-0-7356-4524-0。

什麼是 Web 部署套件?

當您使用 Visual Studio 2010 或直接使用 MSBuild 來建置和部署 Web 應用程式專案時,最終結果通常是 Web 部署套件。 Web 部署套件是.zip檔案。 其中包含 IIS 和 Web Deploy 需要的所有專案,以重新建立 Web 應用程式,包括:

  • Web 應用程式的已編譯輸出,包括內容、資源檔、組態檔、JavaScript 和級聯樣式表單, (CSS) 資源等等。
  • Web 應用程式專案的元件,以及解決方案內任何參考專案的元件。
  • SQL 腳本,以產生您使用 Web 應用程式部署的任何資料庫。

產生 Web 部署套件之後,您可以透過各種方式將其發佈至 IIS 網頁伺服器。 例如,您可以將 Web Deploy Remote Agent 服務或目的地網頁伺服器上的 Web Deploy 處理常式設為目標,或使用 IIS 管理員在目的地 Web 服務器上手動匯入套件,以從遠端部署它。 如需這些部署方法的詳細資訊,請參閱 選擇正確的 Web 部署方法

建置程式如何運作?

這會顯示當您建置和封裝 Web 應用程式專案時會發生什麼事:

當您建置和封裝 Web 應用程式專案時會發生什麼事。

當您建置 Web 應用程式專案時,建置程式會產生名為 [專案名稱].SourceManifest.xml的 檔案。 除了專案檔和建置輸出之外,這個 .SourceManifest.xml 檔案會告訴 Web Deploy 它需要包含在 Web 部署套件中的內容。 使用這些輸入,Web Deploy 會產生名為 [專案名稱].zip的 Web 部署套件。

除了 Web 部署套件之外,建置程式會產生兩個檔案,可協助您使用套件:

  • .deploy.cmd檔案包含一組參數化的 Web Deploy (MSDeploy.exe) 命令,將 Web 部署套件發佈至遠端 IIS 網頁伺服器。 使用適當的參數執行 .deploy.cmd 檔案,通常提供更快速且更簡單的替代方案,讓您自行手動建構MSDeploy.exe命令。
  • SetParameters.xml檔案會將一組參數值提供給 MSDeploy.exe 命令。 這些值包括屬性,例如您要部署封裝的 IIS Web 應用程式名稱、 web.config 檔案中定義的任何服務端點和連接字串的值,以及專案屬性頁面上定義的任何部署屬性值。

SetParameters.xml檔案是管理部署程式的關鍵。 此檔案會根據 Web 應用程式專案的內容動態產生。 例如,如果您將連接字串新增至 web.config 檔案,建置程式會自動偵測連接字串、據以參數化部署,並在 SetParameters.xml 檔案中建立專案,以允許您修改連接字串作為部署程式的一部分。 下一個主題:設定 Web 套件部署的參數,會更詳細地說明此檔案的角色,並說明您可以在建置和部署期間修改它的不同方式。

注意

在 Visual Studio 2010 中,WPP 不支援在封裝之前先先編譯 Web 應用程式中的頁面。 下一版的 Visual Studio 和 WPP 將包含將 Web 應用程式預先編譯為封裝選項的能力。

結論

本主題提供 Visual Studio 2010 中 Web 應用程式專案的建置和封裝程式概觀。 它說明 WPP 如何讓您從 MSBuild 叫用 Web Deploy 命令,並說明建置和封裝程式的運作方式。

建立 Web 部署套件之後,下一個步驟是部署它。 如需詳細資訊,請參閱 設定 Web 套件部署 的參數和 部署 Web 套件

深入閱讀

本教學課程中的下一個主題: 設定 Web 套件部署的參數部署 Web 套件,提供如何使用您所建立之 Web 套件的指引。 本系列中進 階企業 Web 部署的最後一個教學課程提供如何自訂和疑難排解封裝程式的指引。

如需專案檔和 WPP 的更深入簡介,請參閱在Microsoft Build Engine內:使用 MSBuild 和 Team Foundation Build by Sayed Ibimiim Hashimi 和 William Bartholomew,ISBN:978-0-7356-4524-0。