建立及執行部署命令檔

作者:Jason Lee

本主題描述如何建置命令檔,讓您使用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 服務器。
  • 將資料庫部署至資料庫伺服器。

執行部署

當您為目標環境建立命令檔案時,應該只要執行檔案即可完成整個部署。

將連絡人管理員解決方案部署至測試環境

  1. 在您的開發人員工作站上,開啟 Windows 檔案總管,然後流覽至 Publish-Dev.cmd 檔案的位置。

  2. 按兩下檔案以執行它。

  3. 如果出現 [ 開啟檔案 – 安全性警告] 對話方塊,請按一下 [ 執行]。

  4. 如果您的組態設定和測試伺服器已正確設定,當 MSBuild 完成處理專案檔時,[命令提示字元] 視窗會顯示 [建置成功 ] 訊息。

    如果您的組態設定和測試伺服器已正確設定,當 MSBuild 完成處理專案檔時,[命令提示字元] 視窗會顯示 [建置成功] 訊息。

  5. 如果這是您第一次將解決方案部署到此環境,您必須將測試 Web 服務器電腦帳戶新增至ContactManager資料庫上的db_datawriterdb_datareader角色。 此程式描述于設定 Web Deploy Publishing 的資料庫伺服器中。

    注意

    您只需要在建立資料庫時指派這些許可權。 根據預設,建置程式不會在每個部署上重新建立資料庫,而是會比較現有的資料庫與最新的架構,並只進行所需的變更。 因此,您只需要在第一次部署解決方案時對應這些資料庫角色。

  6. 開啟 Internet Explorer 並流覽至連絡人管理員應用程式的 URL (, http://testweb1:85/ContactManager/ 例如) 。

  7. 確認應用程式如預期般運作,而且您可以新增連絡人。

    確認應用程式如預期般運作,而且您可以新增連絡人。

結論

建立包含 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 命令列參考