概括起草Visual Studio 2005網(wǎng)站構(gòu)建原則
Visual Studio 2005支持兩種項目模型,經(jīng)過長時間學習Visual Studio 2005,于是和大家分享一下,看完本文你肯定有不少收獲,希望本文能教會你更多東西。下面就這個問題來詳細說說吧。
Visual Studio 2005網(wǎng)站項目是Visual Studio 2005剛發(fā)行時內(nèi)置的項目模型,它提供了一個基于無項目 (project-less)的模型來開發(fā)web應用,該模型使用了ASP.NET 2.0在運行時使用的同個動態(tài)編譯系統(tǒng)。而Visual Studio 2005Web應用項目則是今春早些時候發(fā)布的一個完全支持的可下載項目模型,它提供了一個使用了基于MSBuild的build系統(tǒng)的項目模型,可以把一個項目中的所有編碼編譯成單個程序集 (與Visual Studio 2003類似,但又少了Visual Studio 2003 web項目中涉及FrontPage服務器擴展,IIS依賴性,以及其他問題的種種限制)。想進一步了解Visual Studio 2005Web應用項目的話,請參考我發(fā)表在 http://webproject.scottgu.com網(wǎng)站上的系列教程。注意,對Visual Studio 2005Web應用項目的支持將包含在Visual Studio 2005SP1中,這樣以后就不用另外下載了。
Visual Studio 2005網(wǎng)站項目和Visual Studio 2005Web應用項目兩個模型在將來的Visual Studio版本中將會繼續(xù)被完全支持。我們發(fā)現(xiàn),有些人喜歡一個模型,憎惡另外一個模型,反之亦然。從特性(feature)的角度看,沒有“最佳的模型選擇”這一說,完全取決于你個人的愛好和你們的團隊協(xié)作機制(team dynamics)來決定哪個模型最適于你。譬如,許多的企業(yè)開發(fā)人員喜歡Visual Studio 2005Web應用項目模型,因為它提供了更多的build控制和團隊集成支持,而許多的web開發(fā)人員則喜歡Visual Studio 2005網(wǎng)站項目模型,因為它的“即存即行(just hit save)”的動態(tài)模型和靈活性。
#t#有2篇文章,你也許會發(fā)現(xiàn)在決定采用哪個模型時有用,這篇MSDN上的白皮書內(nèi)含對這兩個模型的比較, 而Rick Strahl的《Web應用項目和Web 部署項目發(fā)布了》一文對不同選項的利弊做了一個很好的討論。
想從Visual Studio 2005網(wǎng)站項目模型遷移到Visual Studio 2005Web應用項目模型的話,請按這個C#或VB版的教程里示范的步驟做。
在對項目做full build時,Visual Studio 2005Web 應用項目模型編譯起項目來會比Visual Studio 2005網(wǎng)站項目模型快很多。full build是指對項目里的每一個類和網(wǎng)頁要做編譯或重新編譯的情形,要么因為你在build菜單里選了Rebuild,要么因為你修改了一個依賴的類庫項目或者/app_code子目錄里的編碼,然后點擊了build或按了ctrl-shift-b來編譯解決方案。
在這些“全部重新編譯(full rebuild)”的情形下,Visual Studio 2005Web 應用項目編譯比Visual Studio 2005網(wǎng)站項目快很多有幾個原因。主要原因是,跟在Visual Studio 2003中一樣,Visual Studio 2005Web 應用項目只編譯你的頁面的后臺編碼(code-behind)以及你項目中的其他類文件。它既不分析也不編譯你的.aspx 頁面內(nèi)的內(nèi)容/控件/行內(nèi)(inline)編碼,這意味著,它不需要parse那些文件。壞處是,這也意味著,在編譯過程中,它不會檢查那些文件是否有錯(而Visual Studio 2005網(wǎng)站項目則會識別其中的任何錯誤)。好處是,這使得編譯極其快。
那么,這是否意味著你總是應該在大型項目的情形下使用Visual Studio 2005Web 應用項目模型來得到最快的build 時間呢?不,不一定。Visual Studio 2005網(wǎng)站項目的一個很好的特性是對“按需編譯(on demand compilation)”的支持。這在你對所依賴的文件做了變化(dependent changes)后,讓你避免常規(guī)地重新編譯整個項目,而是只需要對那些你正在編輯的頁面做重新編譯,而且這個編譯是按需進行的。這會給你的解決方案帶來build性能上的極大改進,而且也會在開發(fā)非常大的項目時給予你非常好的工作流程。如果你想要在保持網(wǎng)站模型靈活性的同時改進build性能,我強烈推薦使用這個模型。
以后會針對Visual Studio 2005網(wǎng)站項目模型和Visual Studio 2005Web 應用項目模型優(yōu)化技術(shù)方面的特定教程,包括我上面描述的“按需編譯(on demand compilation)” build 選項。