對我個人而言立即回滾是最重要的。在追蹤變化時,網站項目再次非常困難。
你可以找到一個很好的詳細比較here。我在這裏複製這篇文章。
1)部署。如果你需要就地部署,這個模型是完美的。但是,由於您以明文形式顯示您的邏輯,因此不推薦。所以,任何有權訪問物理服務器的人都可能會弄亂你的代碼,你永遠不會注意到這一點。你可以嘗試做預編譯的網站,但是你會得到很多dll和幾乎不可觸及的aspx文件。微軟認識到這一限制併發布了Web部署項目工具。
2)您需要跟蹤您在本地更改的內容以及上傳到生產服務器的內容。沒有版本控制。Visual Studio具有Web Copy工具,但該工具無法提供幫助。我不得不建立自己的工具,它可以跟蹤基於Visual Source Safe的變更。
3)當您按F5進行調試執行時,只需2分鐘即可編譯並執行整個項目。當然你可以附加調試器到現有的線程,但這不是一個明顯的解決方案。 4)如果你試圖在飛行中產生控制,你將會遇到第一個無法解決的限制。如何引用其他頁面和控件。頁面和控件編譯發生在每個目錄的基礎上。在最好的情況下,你將獲得每個目錄的彙編,最糟糕的情況是每個頁面或控件都將獲得它自己的程序集。如果您需要從控件或其他頁面引用另一個頁面,則需要使用@Reference指令顯式地將其導入。
所以對於,
customControl = this.LoadControl( 「〜/控制/ CustomUserControl.ascx」)作爲CustomUserControl;
你需要,
但是,如果你想真正動態添加的東西,不能把所有適當@Reference指令是什麼?或者如果你正在創建服務器控制並且它沒有ascx文件,那麼你沒有@Reference的地方?由於每個控件都有自己的組件,因此幾乎不可能做反射。
重新出現在Visual Studio 2005 SP1中的Web應用程序項目。他們解決了上述所有問題。
1)部署。每個項目只有一個dll。您可以創建可重新分發的包和可重複的構建。您可以進行版本控制和構建腳本。
2)如果你在代碼後面做了代碼,你可以只上傳一個dll。如果您更改了aspx,則可以上傳aspx更改。
3)執行最多需要2-3秒。
4)整個項目在一個程序集中,這有助於引用任何頁面或控件。結論。對於任何一種嚴肅的工作,你應該使用Web應用程序項目。特別感謝Rick Strahl在ASP.NET 2.0中的精彩文章Compilation and Deployment。
Rick Strahl文章:http://www.west-wind.com/presentations/AspNetCompilation/AspNetCompilation.asp – Nick
Web應用程序項目沒有首先出現在VS 2005 SP1中。他們是VS 2003的主要開發模式。在MS推出網站模型之後,開發人員社區出現了這樣一個負面反應,他們必須做出迴應,並將其重新引入到VS 2005的SP中: http://www.codersbarn.com/post/2008/06/01/ASPNET-Web-Site-versus-Web-Application-Project.aspx – IrishChieftain
@IrishChieftain:+1並編輯我的答案。 – Mahin