建立及執行部署命令檔
本主題描述如何建置命令檔,讓您使用MICROSOFT BUILD ENGINE (MSBuild) 專案檔來執行部署,做為單一步驟、可重複的程式。
本主題構成一系列教學課程的一部分,以名為 Fabrikam, Inc 的虛構公司企業部署需求為基礎。本教學課程系列使用範例解決方案連絡人 管理員 解決方案來代表具有實際複雜層級的 Web 應用程式,包括 ASP.NET MVC 3 應用程式、Windows Communication Foundation (WCF) 服務和資料庫專案。
這些教學課程的核心部署方法是以 瞭解建置程式中所述的分割專案檔方法為基礎,其中建置程式是由兩個專案檔控制,一個包含適用于每個目的地環境的組建指示,另一個包含環境特定的組建和部署設定。 在建置階段,環境特定的專案檔會合並到與環境無關的專案檔中,以形成一組完整的建置指示。
處理序概觀
在本主題中,您將瞭解如何建立和執行使用這些專案檔的命令檔,以對目標環境執行可重複的部署。 基本上,命令檔只需要包含 MSBuild 命令,
- 告知 MSBuild 執行與環境無關的 Publish.proj 檔案。
- 告訴 Publish.proj 檔案哪個檔案包含環境特定的專案設定,以及要在哪裡找到它。
建立 MSBuild 命令
如 瞭解建置程式中所述,環境特定的專案檔,例如 Env-Dev.proj,是設計成在建置階段匯入環境無關 的 Publish.proj 檔案。 這兩個檔案一起提供一組完整的指示,告知 MSBuild 如何建置和部署您的解決方案。
Publish.proj檔案會使用Import元素匯入環境特定的專案檔。
<Import Project="$(TargetEnvPropsFile)"/>
因此,當您使用MSBuild.exe來建置和部署連絡人管理員解決方案時,您需要:
- 在 Publish.proj 檔案上執行MSBuild.exe。
- 提供名為 TargetEnvPropsFile的命令列參數,以指定環境特定專案檔的位置。
若要這樣做,您的 MSBuild 命令應該如下所示:
msbuild.exe Publish.proj /p:TargetEnvPropsFile=EnvConfig\Env-Dev.proj
從這裡開始,這是移至可重複、單一步驟部署的簡單步驟。 您只需要將 MSBuild 命令新增至 .cmd 檔案。 在連絡人管理員解決方案中,[發佈] 資料夾包含名為 Publish-Dev.cmd 的檔案,其執行此動作。
%windir%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe Publish.proj /fl /p:TargetEnvPropsFile=EnvConfig\Env-Dev.proj
echo
pause
注意
/fl參數會指示 MSBuild 在叫用MSBuild.exe的工作目錄中建立名為msbuild.log的記錄檔。
若要部署或重新部署連絡人管理員解決方案,您只需要執行 Publish-Dev.cmd 檔案。 當您執行檔案時,MSBuild 會:
- 建置方案中的所有專案。
- 為 Web 應用程式專案產生可部署的 Web 套件。
- 產生資料庫專案的 .dbschema 和 .deploymanifest 檔案。
- 將 Web 套件部署至 Web 服務器。
- 將資料庫部署至資料庫伺服器。
執行部署
當您為目標環境建立命令檔案時,應該只要執行檔案即可完成整個部署。
將連絡人管理員解決方案部署至測試環境
在您的開發人員工作站上,開啟 Windows 檔案總管,然後流覽至 Publish-Dev.cmd 檔案的位置。
按兩下檔案以執行它。
如果出現 [ 開啟檔案 – 安全性警告] 對話方塊,請按一下 [ 執行]。
如果您的組態設定和測試伺服器已正確設定,當 MSBuild 完成處理專案檔時,[命令提示字元] 視窗會顯示 [建置成功 ] 訊息。
如果這是您第一次將解決方案部署到此環境,您必須將測試 Web 服務器電腦帳戶新增至ContactManager資料庫上的db_datawriter和db_datareader角色。 此程式描述于設定 Web Deploy Publishing 的資料庫伺服器中。
注意
您只需要在建立資料庫時指派這些許可權。 根據預設,建置程式不會在每個部署上重新建立資料庫,而是會比較現有的資料庫與最新的架構,並只進行所需的變更。 因此,您只需要在第一次部署解決方案時對應這些資料庫角色。
開啟 Internet Explorer 並流覽至連絡人管理員應用程式的 URL (,
http://testweb1:85/ContactManager/
例如) 。確認應用程式如預期般運作,而且您可以新增連絡人。
結論
建立包含 MSBuild 指示的命令檔可讓您快速且輕鬆地建置多專案解決方案,並將其部署至特定目的地環境。 如果您需要重複將解決方案部署至多個目的地環境,您可以建立多個命令檔案。 在每個命令檔中,MSBuild 命令會建置相同的通用專案檔,但會指定不同的環境特定專案檔。 例如,要發佈至開發人員或測試環境的命令檔可能包含下列 MSBuild 命令:
msbuild.exe Publish.proj /p:TargetEnvPropsFile=EnvConfig\Env-Dev.proj
要發行至預備環境的命令檔可能包含下列 MSBuild 命令:
msbuild.exe Publish.proj /p:TargetEnvPropsFile=EnvConfig\Env-Stage.proj
注意
如需如何為您自己的伺服器環境自訂環境特定專案檔的指引,請參閱 設定目標環境的部署屬性。
您也可以在 MSBuild 命令中覆寫屬性或設定各種其他參數,來自訂每個環境的建置程式。 如需詳細資訊,請參閱 MSBuild 命令列參考。