共用方式為


使用 Visual Studio 進行 ASP.NET Web 部署:命令列部署

演講者:Tom Dykstra

下載入門專案

本教學課程系列介紹如何使用 Visual Studio 2012 或 Visual Studio 2010 將 ASP.NET Web 應用程式部署 (發佈) 至 Azure App Service Web Apps 或第三方託管提供者。 如需本系列的資訊,請參閱本系列的第一個教學課程

概觀

本教學課程將示範如何從命令列呼叫 Visual Studio Web 發佈管線。 這對於您想要自動化部署流程而不是在 Visual Studio 中手動執行 (通常使用原始程式碼版本控制系統) 的場景非常有用。

進行更改以進行部署

目前「關於」頁面顯示範本程式碼。

帶有範本程式碼的關於頁面

您將用顯示學生註冊摘要的程式碼替換它。

開啟 About.aspx 頁面,刪除 MainContent Content 元素內的所有標記,然後在其位置插入以下標記:

<h2>Student Body Statistics</h2>
    <asp:ObjectDataSource ID="StudentStatisticsObjectDataSource" runat="server" TypeName="ContosoUniversity.BLL.SchoolBL"
        SelectMethod="GetStudentStatistics" DataObjectTypeName="ContosoUniversity.DAL.EnrollmentDateGroup">
    </asp:ObjectDataSource>
    <asp:GridView ID="StudentStatisticsGridView" runat="server" AutoGenerateColumns="False"
        DataSourceID="StudentStatisticsObjectDataSource">
        <Columns>
            <asp:BoundField DataField="EnrollmentDate" DataFormatString="{0:d}" HeaderText="Date of Enrollment"
                ReadOnly="True" SortExpression="EnrollmentDate" />
            <asp:BoundField DataField="StudentCount" HeaderText="Students" ReadOnly="True"
                SortExpression="StudentCount" />
        </Columns>
    </asp:GridView>

執行專案並選擇「關於」頁面。

About 頁面

使用命令列部署到測試

您不會部署其他資料庫更改,因此請停用 aspnet-ContosoUniversity 資料庫的 dbDacFx 資料庫部署。 開啟「發佈 Web」精靈,並在三個發佈設定檔中的每一個中,清除「設定」標籤上的「更新資料庫」核取方塊。

在 Windows 8 開始頁面中,搜尋「Developer Command Prompt for VS2012」。

以滑鼠以滑鼠右鍵按一下「Developer Command Prompt for VS2012」圖示,然後按一下「以管理員身分執行」。

在命令提示字元下輸入以下命令,將解決方案檔案的路徑替換為您的解決方案檔案的路徑:

msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true /p:PublishProfile=Test

MSBuild 建置解決方案並將其部署到測試環境。

命令列輸出

開啟瀏覽器並移至 http://localhost/ContosoUniversity,然後按一下「關於」頁面以驗證部署是否成功。

如果您尚未在測驗中建立任何學生,您將在「學生群體統計」標題下看到空白頁面。 進入「學生」頁面,點擊「新增學生」,新增一些學生,然後返回「關於」頁面查看學生統計資料。

顯示「關於」頁面上的學生群體統計資料的螢幕擷取畫面。

關鍵命令列選項

您輸入的命令將解決方案檔案路徑和兩個屬性傳遞給 MSBuild:

msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true 
/p:PublishProfile=Test

部署解決方案與部署單一項目

指定解決方案檔案會導致建置解決方案中的所有專案。 如果解決方案中有多個 Web 項目,則適用下列 MSBuild 行為:

  • 您在命令列上指定的屬性將傳遞到每個項目。 因此,每個 Web 專案都必須有一個具有您指定名稱的發佈設定檔。 如果指定 /p:PublishProfile=Test,則每個 Web 專案都必須有一個名為測試的發佈設定檔。
  • 您可能會成功發佈一個項目,而另一個項目甚至無法建置。 有關詳細資訊,請參閱 Stackoverflow 討論串「MSBuild fails with two packages」(MSBuild 在處理兩個套件時失敗)。

如果指定單一專案而不是解決方案,則必須新增指定 Visual Studio 版本的參數。 如果您使用的是 Visual Studio 2012,命令列將類似於以下範例:

msbuild C:\ContosoUniversity\ContosoUniversity\ContosoUniversity.csproj /p:DeployOnBuild=true /p:PublishProfile=Test /p:VisualStudioVersion=11.0

Visual Studio 2010 的版本號碼是 10.0。 有關詳細資訊,請參閱 Sayed Hashimi 部落格上的「Visual Studio 專案相容性和 VisualStudioVersion」。

指定發佈設定檔

您可以按名稱或 .pubxml 檔案的完整路徑指定發佈設定文件,如以下範例所示:

msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true /p:PublishProfile=C:\ContosoUniversity\ContosoUniversity\Properties\PublishProfiles\Test.pubxml

支援命令列發佈的 Web 發佈方法

命令列發佈支援三種發佈方法:

  • MSDeploy - 使用 Web 部署進行發佈。
  • Package - 透過建立 Web 部署套件進行發佈。 您必須獨立於建立該套件的 MSBuild 命令來安裝該套件。
  • FileSystem - 透過將檔案複製到指定資料夾來發佈。

指定建置設定和平台

建置設定和平台必須在 Visual Studio 或命令列中設定。 發佈設定檔包含名為 LastUsedBuildConfigurationLastUsedPlatform 的屬性,但您無法設定這些屬性來決定專案的建置方式。 有關詳細資訊,請參閱Sayed Hashimi 的部落格上的「MSBuild:如何設定設定屬性」。

部署到預備環境

要部署到 Azure,必須將密碼新增至命令列。 如果您將密碼保存在 Visual Studio 的發佈設定檔中,則它會以加密形式儲存在您的 .pubxml.user 檔案中。 當您進行命令列部署時,MSBuild 不會存取該文件,因此您必須在命令列參數中傳遞密碼。

  1. 從您先前為預備網站下載的 .publishsettings 檔案中複製所需的密碼。 密碼是 Web Deploy publishProfile 元素的 userPWD 屬性值。

    網路部署密碼

  2. 在 Windows 8 開始頁面中,搜尋「Developer Command Prompt for VS2012」,然後按一下圖示以開啟命令提示字元。 (這次您不必以管理員身分打開它,因為您沒有部署到本機上的 IIS。)

  3. 在命令提示字元輸入以下命令,將解決方案檔案的路徑替換為解決方案檔案的路徑,並將密碼替換為您的密碼:

    msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true /p:PublishProfile=Staging /p:Password=hdNSWsbuqno7J5uqnwKafwlfNPt1DSco7J5uqnwKafwlfNPt1DSpKHuYgCco7J5 /p:AllowUntrustedCertificate=true
    

    請注意,此命令列包含一個額外參數:/p:AllowUntrustedCertificate=true。 在編寫本教學課程時,從命令列發佈到 Azure 時必須設定 AllowUntrustedCertificate 屬性。 當此錯誤的修復發佈後,您將不再需要該參數。

  4. 開啟瀏覽器並前往預備網站的 URL,然後按一下「關於」頁面以驗證部署是否成功。

    正如您之前在測試環境中看到的那樣,您可能必須建立一些學生才能在「關於」頁面上查看統計資料。

部署至生產位置

部署到生產環境的程序與部署到預備環境的程序類似。

  1. 從先前為生產網站下載的 .publishsettings 檔案中複製所需的密碼。

  2. 開啟「Developer Command Prompt for VS2012」。

  3. 在命令提示字元輸入以下命令,將解決方案檔案的路徑替換為解決方案檔案的路徑,並將密碼替換為您的密碼:

    msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true /p:PublishProfile=Production /p:Password=hdNSWsbuqnwKafwlo7J5uqnwKafwlfNPt1DSqnwKafwlfNPt1DSpKHuYgCco7J5 /p:AllowUntrustedCertificate=true
    

    對於真正的生產網站,如果還有資料庫變更,您通常會在部署之前將 app_offline.htm 文件複製到網站,並在成功部署後刪除該文件。

  4. 開啟瀏覽器並前往預備網站的 URL,然後按一下「關於」頁面以驗證部署是否成功。

摘要

您現在已經使用命令列部署了應用程式更新。

顯示「關於」頁面的螢幕擷取畫面,其中顯示了學生群體統計資料。

在下一個教學課程中,您將看到如何擴展 Web 發佈管線的範例。 此範例將示範如何部署專案中未包含的檔案。