Web Deployment Project (WDP)是一個在Visual Studio外掛上去的專案類型,主要目的是提供你將現有ASP.NET Website Project (網站專案)或ASP.NET 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專案的屬性設定頁面進行設定。
但對於一些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)或須要開發流程自動化的人,必定要熟悉這套工具如何操做,如下是一些相關連結:
若要下載Web Deployment Projects能夠參考如下網址:
說明:本文由繁體中文翻譯而來,僅做我的學習之用,轉載請保留原文地址。
原文地址:http://blog.miniasp.com/post/2009/01/Visual-Studio-2008-Web-Deployment-Project.aspx