●網站編譯速度快,使用了增量編譯模式,只要只有檔案被修改後,這部分才會被增量編譯進去。
●產生的程序集
WebSite:產生隨機的程式集名,需要透過外掛WebDeployment才可以產生單一組件
WebApplication:可以指定網站專案產生單一組件,因為是獨立的組件,所以和其他專案一樣可以指定應用程式集的名字、版本、輸出位置等資訊
●可以將網站拆分成多個項目以方便管理
●可以從專案中和原始碼管理排除一個檔案
●方便的支援VSTS的Team Build方便每日建置
#
●更強大的程式碼檢查功能,並且檢查策略受原始碼控制
●可以對編譯前後進行自己規定的處理
●對App_GlobalResources 的Resource強類別支援(網路上說的,還沒了解)
●直接升級使用VS2003建構的大型系統
●動態編譯頁面,馬上可以看到效果,不用編譯整個網站(主要優勢)
●同上,可以使錯誤的部分和使用的部分不相干擾(可以要求只有編譯通過才能簽入)
#
●可以每個頁面產生一個程序集(一般不會採用這種方式)
●可以把目錄當做一個Web應用來處理,直接複製檔案就可以發布,不需要專案檔(適合小網站)
●可以把頁面也編譯到程式集中(應該用不到,WebApplication也可以透過WebDeployment外掛來實現)
VS2005 SP1內建了轉換程序,可以非常方便的從WebSite轉換到WebApplication
##
只需要複製文件,右鍵執行“轉換為Web應用程式”即可。
未查到有專門的反向轉換工具,但比較後發現如果轉換也非常簡單。
刪除所有*.designer.cs
將*.aspx、*.ascx、*.master頁面檔案中的 Codebehind="******.aspx.cs" 批次替換成 CodeFile="******.aspx.cs"
這樣就可以轉換回來了
Scenario |
Web Application Project |
Web Site Project |
#
Project definition # |
跟 Visual Studio .NET 2003 類似,由於專案文件的存在,只有被專案文件引用的文件才會在Solution Explorer中出現。而且只有這些文件才會被編譯。可以很容易的把一個ASP.NET套用拆分成多個Visual Studio專案。可以很容易的從專案中和原始碼管理中排除一個檔案。
|
一個目錄結構就是一個WEB專案。沒有項目文件存在。這個目錄下的所有文件,都被當作專案的一部分而存在。 |
#
編譯和產生 |
跟著Visual Studio .NET 2003的Web應用程式專案編譯模式幾乎一樣。 專案中的所有的code-behind 類別檔案和獨立類別檔案都被編譯成一個獨立應用程式集。這個應用程式集被放在Bin目錄下。因為是一個獨立的應用程式集,你能夠指定應用程式集的名字、版本、輸出位置等資訊。 例如:Model-View-Controller (MVC) 模式就可以在這裡很好的被使用。因為它允許在WEB頁面和WEB使用者控制項中引用一個獨立的類別。 |
編譯(Build)指令只是測試這個WEB網站是否編譯正確,調試一個WEB網站專案的時候,是透過依賴你的原始碼文件,ASP.net進行動態編譯頁面和類別來實現的。 預先編譯網站和動態編譯網站用的是同一個 compilation semantics ,你可以透過預編譯來提升網站的效能。 ASP.net 動態編譯系統提供了兩個模型:預設的batch 編譯模型和fixed-names 編譯模型。 batch 編譯模型中,被編譯成多個應用程式集(典型的是每一個目錄被編譯成一個)。這時候你看應用程式集,很難對應上是哪個目錄。 fixed-names 編譯模型中,網站的每個頁面或每個使用者控制項被編譯成一個應用程式集。
|
#
Iterative |
調試或執行Web頁面的時候,你必須全部編譯整個WEB專案。 編譯整個WEB專案通常比較快,因為Visual Studio使用了增量編譯模式,隻隻有檔案被修改後,這部分才會被增量編譯進去。 |
你可以設定Visual Studio 2005的編譯屬性:編譯整個網站、編譯一個指定頁面、或什麼都不做。在最後一種情況下,當你執行一個WEB網站的時候,Visual Studio 只打開一個瀏覽器,並訪問目前或起始頁,當這個請求被傳送後,ASP.net 才開始動態編譯。 這種模式下,頁面被動態編譯或被編譯成不同應用程式集,所以如果你偵錯或執行一個頁面的時候,不需要整個專案被編譯通過。有錯誤的部分跟你使用的部分可以互不干擾。 預設情況下,當你執行或偵錯任何WEB頁的時候,Visual Studio##完全編譯Web Site專案。 這麼做可以看到編譯時的所有錯誤。但是,在開發進程中,完全編譯整個網站會是相當慢的。所以推薦你在開發調試中,只編譯當前頁。 |
#
部署 |
因為所有的類別檔案被編譯成一個應用程式集,當你部署的時候,只要要把這個應用程式集和 .aspx檔、.ascx檔案以及其它靜態內容檔案一起部署。 這種模型下,.aspx 檔案將不被編譯,當瀏覽器造訪這個頁面的時候,才會被動態編譯。 不過,如果你使用Web Deployment Projects (一個Visual Studio 2005#的插件,沒有被預設包含在VS2005),你就可以把 .aspx 檔也編譯進入一個應用程序集中。 #如果你只修改了小小的一行程式碼,你也需要把整個專案的所有程式碼都編譯,並且發布包含所有程式碼的這個應用程式集。
|
使用Visual Studio 的 Publish Website 指令,你可以把 .aspx 檔和 code-behind 檔案編譯成應用程式集,所以你看到的編譯後的 .aspx 檔案頭發生了變化。 (注意:Build 命令不會給你可部署的應用程式集) #最新版本的 Publish 將支援僅編譯 code-behind 文件,這樣部署的時候,將不會改變 .aspx 檔。 預設是在Bin目錄下預先編譯成幾個應用程式集,典型的是一個目錄對應一個應用程式集。 fixed-names 部署選項可以讓每一個WEB頁面或每個##WEB使用者控制項建立一個應用程式集,這樣每個頁面都有一個可部署的應用程式集。但是,fixed-names 部署選項會增加應用程式集的個數,而且實際記憶體使用也會增加。 |
#
從Visual Studio .NET 2003升級 # |
因為跟VS2003採用了相同的WEB專案開發模型,升級是非常非常簡單的。 |
Web site 專案的編譯選項不同導致了它跟Visual Studio .NET 2003WEB專案的極大不同。 雖然微軟提供了一個轉換嚮導,但是如果你的項目如果是一個複雜的VS2003項目,使用這個轉換嚮導後,你還需要對照轉換手冊,做很多工作。 如果你要從VS2003升級,建議不要用這種WEB網站開發模版。而是使用Web application 專案。 |
#
Option or Task |
Web Application Projects |
Web Site Projects |
#
你有一個大型的Visual Studio .NET 2003 Web#應用程式需要遷移到VS2005。 |
√ # |
|
#
喜歡使用 single-page code #模型來開發網站頁面。而不是使用code-behind 模型來寫網站頁面 # |
|
√ # |
#
喜歡採用下面的方式來寫網站: # |
|
√ # |
#
在編寫頁面時候,為了可以快速的看到編寫效果,動態編譯該頁面,馬上可以看到效果,不用編譯整個網站。 |
||
#
(就是說,只需要儲存文件,然後在瀏覽器中刷新一下,就可以看到自己剛剛做的效果) |
||
#
需要控制編譯後應用程式集的名字 |
√ # |
|
#
需要每個頁面產生一個應用程式集 # |
|
√ # |
#
WEB頁面或WEB使用者控制項中需要使用到單獨的類別。 |
√ # |
|
#
需要使用多個Project來建立一個Web應用程式。 |
√ # |
|
#
需要處理pre-build 和 post-build #事件(編譯前後需要有自己額外的處理) |
√ # |
|
#
希望把一個目錄當作一個WEB應用來處理,而不需要新建一個Project 檔。 |
|
√ # |
以上是在VS中新建網站和新建WEB專案有什麼區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!