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

By Tom Dykstra

下載入門專案

本教學課程系列說明如何使用 Visual Studio 2012 或 Visual Studio 2010,將 (發佈) ASP.NET Web 應用程式部署至Azure App 服務 Web Apps或協力廠商裝載提供者。 如需系列的相關資訊,請參閱 系列的第一個教學課程

概觀

本教學課程說明如何從命令列叫用 Visual Studio Web 發佈管線。 這適用于您想要 將部署程式自動化 ,而不是在 Visual Studio 中手動執行,通常是使用 原始程式碼版本控制系統的案例。

進行部署的變更

目前 [關於] 頁面會顯示範本程式碼。

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

您將將它取代為顯示學生註冊摘要的程式碼。

開啟About.aspx頁面、刪除專案內 MainContentContent 的所有標記,並在其位置插入下列標記:

<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 [開始] 頁面中,搜尋 VS2012 的開發人員命令提示字元

以滑鼠右鍵按一下 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 專案都必須有名為 Test的發佈設定檔。
  • 當另一個專案未建置時,您可能會成功發佈一個專案。 如需詳細資訊,請參閱 stackoverflow 執行緒 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 Deploy 發佈。
  • Package - 建立 Web Deploy 套件來發佈。 您必須與建立套件的 MSBuild 命令分開安裝。
  • FileSystem - 將檔案複製到指定的資料夾來發佈。

指定組建組態和平臺

建置組態和平臺必須在 Visual Studio 或命令列上設定。 發行設定檔包含名為 LastUsedBuildConfigurationLastUsedPlatform 的屬性,但您無法設定這些屬性,以判斷專案建置方式。 如需詳細資訊,請參閱 MSBuild:如何在 Sayed Hashimi 的部落格上設定組態屬性。

部署至預備環境

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

  1. 從您稍早針對預備網站下載的 .publishsettings 檔案複製所需的密碼。 密碼是 Web Deploy publishProfile 元素的 userPWD 屬性值。

    Web Deploy 密碼

  2. 在 Windows 8 [開始] 頁面中,搜尋 VS2012 的開發人員命令提示字元,然後按一下圖示以開啟命令提示字元。 (您這次不需要以系統管理員身分開啟它,因為您不是在本機電腦上部署至 IIS。)

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

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

    請注意,此命令列包含額外的參數: /p:AllowUntrustedCertificate=true 。 由於本教學課程正在撰寫中, AllowUntrustedCertificate 當您從命令列發佈至 Azure 時,必須設定 屬性。 當這個 Bug 的修正發行時,您不需要該參數。

  4. 開啟瀏覽器並移至預備網站的 URL,然後按一下 [ 關於 ] 頁面以確認部署成功。

    如您先前針對測試環境所見,您可能必須建立一些學生,才能在 [ 關於 ] 頁面上看到統計資料。

部署到生產

部署至生產環境的程式類似于預備的程式。

  1. 從您稍早針對生產網站下載的 .publishsettings 檔案複製所需的密碼。

  2. 開啟 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 發佈管線的範例。 此範例將示範如何部署專案中未包含的檔案。