Web Deployment Project (WDP)是一個在Visual Studio外掛上去的專案類型,主要目的是提供你將現有ASP.NET Website Project (網站專案)或ASP.NET Web Application Project (網站應用程式程式專案)另一種部署網站的方式,讓你開發的網站在建置、封裝、部署時擁有更多的選項,也讓網站部署更加方便與自動化。對於有些人來說也許不瞭解
ASP.NET網站專案與
ASP.NET網站應用程式程式專案的差別,建議可參考黑大的Web Site Project vs Web Application Project文章。若我們有一個ASP.NET Website專案,並且希望將網站預先編譯後部署到正式主機的話,若不靠WDP我們會用VS2008內建的Publish Web Site (發布網站)功能(如下左圖),但缺點就是會輸出一大堆組件,事實上對部署網站來說是一大負擔,你總不希望每次部署網站都要砍掉所有資料再重新上傳吧。這時你就可以改用Web Deployment Projects,但與Publish Web Site的操作方式不太一樣,Publish Web Site是直接將網站發布到一個目錄下,但Web Deployment Projects必須先新增一個獨立的WDP專案到方案中(加入方式如上右圖),然後先預先設定
組件名稱 (Assembly Name)與
網站建置時的輸出目錄 。接著就可以直接編譯網站或開啟WDP專案的屬性設定頁面進行設定。對於屬性設定頁面每個欄位的說明,大多都很容易看懂,至於詳細的說明各位可到Using Web Deployment Projects with Visual Studio 2005查詢,這頁的說明一樣適用於VS2008的開發環境。但對於一些Property Pages的選項,有些挺實用的設定我想特別說明如下:
Configuration Properties –> Output Assemblies在Output Assemblies分類中有四個選項,預設是第一個選項,他可以將整個網站編譯成單一組件,其中包括所有頁面、使用者控制項、App_Code、App_WebReferences、...等目錄編譯的結果。 但我比較中意第三個設定,他可以將所有跟使用者介面(UI)有關的頁面程式碼編譯到一個組件中,其他像是App_Code、App_WebReferences、...等目錄都會個別建立不同的組件,這也意味著未來若有頁面程式更新時,你只需部署相關的組件即可,減少部署時網路傳輸的時間。
Configuration Properties –> Deployment在Deployment分類中的設定是我最愛的部分了,他可以讓你的自訂許多「部署」時的狀況,我先說明各參數的用途:Enable Web.config file section replacement 你可以在開發時用自己的web.config設定,但是在部署的時候動態替換成另一個web.config的內容,例如你可以替換appSettings或connectionStrings的內容。 這裡可以設定WDP在進行編譯/部署時(按下Build等同於部署動作),在網站專案輸出根目錄下的Web.config是否有哪個區段(section)要被取代,如設定,你的ASP .NET專案中也必須要有appSettings_Staging.config與SQL2005_Staging.config檔案才行。 appSettings_Staging.config的內容範例如下,一個檔案只能包括一個
區段的資料:
<?xml version="1.0"?> <appSettings> <add key="test" value="TEST123"/> <add key="test1" value="TEST123"/> <add key="test2" value="TEST123"/> <add key="test3" value="TEST123"/> </appSettings> |
Enforce matching section replacements 由於你可以在開發環境自行定義appSettings的參數數量,有時後你自己加了一個參數後很有可能會忘了將「要部署的web.config」也加上這個參數,勾選這個選項就可以避免這種人為疏失的發生。Use external configuration source file 若這個選項不勾選,原本的web.config內容就會依據
Enable Web.config file section replacement的設定直接替換掉內容。 若勾選了此選項,原本web.config內的區段就會被改成用外部載入的方式宣告,例如:
< appSettings configSource ="appSettings_Staging.config" /> |
Remove the App_Data folder from output location 通常App_Data目錄用來儲存一些網站相關的資料,例如SQLExpress資料庫或其他檔案。 而這些資料通常會在不同的執行環境有不同的資料,例如在測試機會有測試用的資料,在正式機會有正式版的資料,通常在部署的時候不會希望蓋掉這些資料。 若勾選此選項,在進行編譯/部署時就會直接將App_Data目錄整個移除,讓你複製這些檔案過去時不用再手動刪除一遍。Configuration 可以讓你切換組態的模式,預設有Debug與Release,你還可以額外自訂,例如:Staging (測試環境)。 意思也就是說,以上的設定可以設定好幾組,你只要切換不同的模式(如),就可以輸出不同執行環境的部署檔案,方便你將檔案複製到目的主機。 你也可以透過Configuration Manager定義不同的Configuration模式是否要編譯Web Deployment Project專案,例如說你在Debug mode應該就不需要建置WDP專案(如示),你可以設定Release或Staging時才需要編譯此專案,並自動產生部署檔案: 除了透過Visual Studio介面的設定外,事實上你還可以自行修改Web Deployment Project的專案檔( *.wdproj ),此專案檔其實就是透過MSBuild編譯執行的,因此這個設定檔可以讓你自訂所有要在編譯時間需進行的任何自訂動作。 舉幾個例子來說:
- 在Staging模式時,你可以修改*.wdproj自訂動作將建置完的檔案直接複製到Staging主機
- 在建置之前(BeforeBuild)刪除一些部署時不必要的檔案或目錄(例如.svn或_svn目錄)
- 在建置完成(AfterBuild)後將所有*.js檔案壓縮,或將jQuery改由Google AJAX Libraries API載入
MSBuild也是另一套超級強大的工具,對於每日建置(Daily Build)或需要開發流程自動化的人,一定要熟悉這套工具如何操作,以下是一些相關連結:
- MSBuild參考
- MSBuild命令列參考
- MSBuild - Wikipedia, the free encyclopedia
- MSBuild Sidekick - GUI editor and debugger for MSBuild scripts (付費商用軟體)
- Open Source MSBuild Community Tasks Project (一堆社群分享的Tasks函示庫)
- Inside MSBuild - Compile Apps Your Way With Custom Tasks For The Microsoft Build Engine
- WiX秘訣-使用MSBuild和Windows Installer XML (WiX)自動化發行作業
若要下載Web Deployment Projects可以參考以下網址:
- Visual Studio 2008 Web Deployment Projects – RTW
- Visual Studio 2005 Web Deployment Projects [ 直接下載 ]
說明:本文由繁體中文翻譯而來,僅作個人學習之用,轉載請保留原文地址。原文地址:http://blog.miniasp.com/post/2009/01/Visual-Studio-2008-Web-Deployment-Project.aspx