建置及封裝 Web 應用程式專案
當您想要將 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 應用程式專案在建置程式完成時封裝部署的方式。
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 以完成各種部署工作的目標,例如 Package 和 MSDeployPublish。
若要瞭解如何使用這些額外的目標,請在連絡人管理員範例解決方案中開啟 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 在建置專案之後執行 套件 目標。
套件目標定義于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 應用程式專案時,建置程式會產生名為 [專案名稱].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。