使用 Visual Studio ASP.NET Web 部署:命令行部署
本教學課程系列說明如何使用 Visual Studio 2012 或 Visual Studio 2010,將 ASP.NET Web 應用程式部署到 Azure App 服務 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>
執行項目並選取 [ 關於] 頁面。
使用命令行部署至測試
您不會部署另一個資料庫變更,因此請停用 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 或命令行上設定。 發行配置檔包含名為 LastUsedBuildConfiguration
和 LastUsedPlatform
的屬性,但您無法設定這些屬性,以判斷專案的建置方式。 如需詳細資訊,請參閱 MSBuild:如何在 Sayed Hashimi 的部落格上設定組態屬性 。
部署到預備環境
若要部署至 Azure,您必須將密碼新增至命令行。 如果您在 Visual Studio 中的發行配置檔中儲存密碼,則會以加密形式儲存在 .pubxml.user 檔案中。 當您進行命令行部署時,MSBuild 不會存取該檔案,因此您必須在命令行參數中傳入密碼。
從您稍早為預備網站下載的 .publishsettings 檔案複製所需的密碼。 密碼是 Web Deploy
publishProfile
元素的userPWD
屬性值。在 Windows 8 [開始] 頁面中,搜尋 VS2012 的開發人員命令提示字元,然後按兩下圖示以開啟命令提示字元。 (您這次不需要以系統管理員身分開啟它,因為您未在本機計算機上部署至 IIS。
在命令提示字元中輸入下列命令,將方案檔案的路徑取代為解決方案檔案的路徑,並將密碼取代為您的密碼:
msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true /p:PublishProfile=Staging /p:Password=hdNSWsbuqno7J5uqnwKafwlfNPt1DSco7J5uqnwKafwlfNPt1DSpKHuYgCco7J5 /p:AllowUntrustedCertificate=true
請注意,此命令行包含額外的參數:
/p:AllowUntrustedCertificate=true
。 由於本教學課程正在撰寫中,當您從命令行發佈至 Azure 時,AllowUntrustedCertificate
必須設定 屬性。 發行此 Bug 的修正程式時,您不需要該參數。開啟瀏覽器並移至您預備網站的 URL,然後按兩下 [關於 ] 頁面以確認部署是否成功。
如您稍早在測試環境所見,您可能必須建立一些學生,才能在 [關於] 頁面上看到統計數據。
部署至生產位置
部署至生產環境的程序類似於預備的程式。
從您稍早針對生產網站下載的 .publishsettings 檔案複製所需的密碼。
開啟 VS2012 的開發人員命令提示字元。
在命令提示字元中輸入下列命令,將方案檔案的路徑取代為解決方案檔案的路徑,並將密碼取代為您的密碼:
msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true /p:PublishProfile=Production /p:Password=hdNSWsbuqnwKafwlo7J5uqnwKafwlfNPt1DSqnwKafwlfNPt1DSpKHuYgCco7J5 /p:AllowUntrustedCertificate=true
針對實際生產網站,如果也有資料庫變更,您通常會在部署成功之前,將app_offline.htm檔案複製到月臺,並在部署成功之後將其刪除。
開啟瀏覽器並移至您預備網站的 URL,然後按兩下 [關於 ] 頁面以確認部署是否成功。
摘要
您現在已使用命令列來部署應用程式更新。
在下一個教學課程中,您將會看到如何擴充 Web 發佈管線的範例。 此範例將示範如何部署專案中未包含的檔案。