溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

在VS中新建網(wǎng)站和新建WEB項(xiàng)目有哪些區(qū)別

發(fā)布時(shí)間:2020-09-09 11:05:17 來(lái)源:億速云 閱讀:233 作者:小新 欄目:編程語(yǔ)言

這篇文章給大家分享的是有關(guān)在VS中新建網(wǎng)站和新建WEB項(xiàng)目有哪些區(qū)別的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧。

WebApplication編程模型的優(yōu)點(diǎn)

●網(wǎng)站編譯速度快,使用了增量編譯模式,僅僅只有文件被修改后,這部分才會(huì)被增量編譯進(jìn)去。

●生成的程序集
WebSite:生成隨機(jī)的程序集名,需要通過(guò)插件WebDeployment才可以生成單一程序集
WebApplication:可以指定網(wǎng)站項(xiàng)目生成單一程序集,因?yàn)槭仟?dú)立的程序集,所以和其他項(xiàng)目一樣可以指定應(yīng)用程序集的名字、版本、輸出位置等信息

●可以將網(wǎng)站拆分成多個(gè)項(xiàng)目以方便管理

●可以從項(xiàng)目中和源代碼管理中排除一個(gè)文件

●方便的支持VSTS的Team Build方便每日構(gòu)建

●更強(qiáng)大的代碼檢查功能,并且檢查策略受源代碼控制

●可以對(duì)編譯前后進(jìn)行自己規(guī)定的處理

●對(duì)App_GlobalResources 的Resource強(qiáng)類支持(網(wǎng)上說(shuō)的,還沒(méi)有了解過(guò))

●直接升級(jí)使用VS2003構(gòu)建的大型系統(tǒng)

WebSite編程模型的優(yōu)點(diǎn)

●動(dòng)態(tài)編譯該頁(yè)面,馬上可以看到效果,不用編譯整個(gè)站點(diǎn)(主要優(yōu)勢(shì))

●同上,可以使錯(cuò)誤的部分和使用的部分不相干擾(可以要求只有編譯通過(guò)才能簽入)

●可以每個(gè)頁(yè)面生成一個(gè)程序集(一般不會(huì)采用這種方式)

●可以把一個(gè)目錄當(dāng)做一個(gè)Web應(yīng)用來(lái)處理,直接復(fù)制文件就可以發(fā)布,不需要項(xiàng)目文件(適合小站點(diǎn))

●可以把頁(yè)面也編譯到程序集中(應(yīng)該用不到,而且WebApplication也可以通過(guò)WebDeployment插件來(lái)實(shí)現(xiàn))

兩種編程模型的互相轉(zhuǎn)換

VS2005 SP1內(nèi)置了轉(zhuǎn)換程序,可以非常方便的從WebSite轉(zhuǎn)換到WebApplication
只需要復(fù)制文件,右鍵執(zhí)行“轉(zhuǎn)換為Web應(yīng)用程序”即可。

未查到有專門的反向轉(zhuǎn)換工具,但比較后發(fā)現(xiàn)如果轉(zhuǎn)換也非常簡(jiǎn)單。
刪除所有*.designer.cs
將*.aspx、*.ascx、*.master頁(yè)面文件中的 Codebehind="******.aspx.cs" 批量替換成 CodeFile="******.aspx.cs"

這樣就可以轉(zhuǎn)換回來(lái)了

Scenario

Web Application Project

Web Site Project

Project definition

Visual Studio .NET 2003 類似,由于項(xiàng)目文件的存在,只有被項(xiàng)目文件所引用的文件才會(huì)在Solution Explorer中出現(xiàn)。而且只有這些文件才會(huì)被編譯??梢院苋菀椎陌岩粋€(gè)ASP.NET應(yīng)用拆分成多個(gè)Visual Studio項(xiàng)目??梢院苋菀椎膹捻?xiàng)目中和源代碼管理中排除一個(gè)文件。

一個(gè)目錄結(jié)構(gòu)就是一個(gè)WEB項(xiàng)目。沒(méi)有項(xiàng)目文件存在。這個(gè)目錄下的所有文件,都被作為項(xiàng)目的一部分而存在。
我們實(shí)際部署的一個(gè)網(wǎng)站,部署上當(dāng)然不會(huì)有任何項(xiàng)目文件存在,如果你想對(duì)這個(gè)網(wǎng)站進(jìn)行修改,用這種編程模型就非常適合。我們根本不用在乎這個(gè)
WEB站點(diǎn)中,那些文件屬于哪個(gè)項(xiàng)目。

編譯和生成

Visual Studio .NET 2003Web應(yīng)用項(xiàng)目編譯模式幾乎一樣。

項(xiàng)目中的所有的code-behind 類文件和獨(dú)立類文件都被編譯成一個(gè)獨(dú)立應(yīng)用程序集。這個(gè)應(yīng)用程序集被放在Bin目錄下。因?yàn)槭且粋€(gè)獨(dú)立的應(yīng)用程序集,你能夠指定應(yīng)用程序集的名字、版本、輸出位置等信息。

例如:Model-View-Controller (MVC) 模式就可以在這里很好的被使用。因?yàn)樗试S在WEB頁(yè)面和WEB用戶控件中引用一個(gè)獨(dú)立的類。

編譯(Build)命令僅僅是測(cè)試這個(gè)WEB站點(diǎn)是否編譯正確,調(diào)試一個(gè)WEB站點(diǎn)項(xiàng)目的時(shí)候,是通過(guò)依賴你的源代碼文件,ASP.net進(jìn)行動(dòng)態(tài)編譯頁(yè)面和類來(lái)實(shí)現(xiàn)的。

預(yù)編譯站點(diǎn)和動(dòng)態(tài)編譯站點(diǎn)用的是同一個(gè) compilation semantics ,你可以通過(guò)預(yù)編譯來(lái)提高站點(diǎn)的性能。

ASP.net 動(dòng)態(tài)編譯系統(tǒng)提供了兩種模型:默認(rèn)的batch 編譯模型和fixed-names 編譯模型。

batch 編譯模型中,被編譯成多個(gè)應(yīng)用程序集(典型的是每一個(gè)目錄被編譯成一個(gè))。這時(shí)候你看應(yīng)用程序集,很難對(duì)應(yīng)上是哪個(gè)目錄。

fixed-names 編譯模型中,網(wǎng)站的每個(gè)頁(yè)面或者每個(gè)用戶控件被編譯成一個(gè)應(yīng)用程序集。

Iterative
development

調(diào)試或者運(yùn)行Web頁(yè)面的時(shí)候,你必須全部編譯整個(gè)WEB項(xiàng)目。

編譯整個(gè)WEB項(xiàng)目通常比較快,因?yàn)?/span>Visual Studio使用了增量編譯模式,僅僅只有文件被修改后,這部分才會(huì)被增量編譯進(jìn)去。

你可以配置Visual Studio 2005的編譯屬性:編譯整個(gè)站點(diǎn)、編譯一個(gè)指定頁(yè)面、或者什么都不作。在最后一種情況下,當(dāng)你運(yùn)行一個(gè)WEB站點(diǎn)的時(shí)候,Visual Studio 僅打開一個(gè)瀏覽器,并訪問(wèn)當(dāng)前或者起始頁(yè),當(dāng)這個(gè)請(qǐng)求被發(fā)送后,ASP.net 才開始動(dòng)態(tài)編譯。

這種模式下,頁(yè)面被動(dòng)態(tài)編譯或者被編譯成不同應(yīng)用程序集,所以如果你調(diào)試或者運(yùn)行一個(gè)頁(yè)面的時(shí)候,不需要整個(gè)項(xiàng)目被編譯通過(guò)。有錯(cuò)誤的部分跟你使用的部分可以互不干擾。

默認(rèn)情況下,當(dāng)你運(yùn)行或調(diào)試任何WEB頁(yè)的時(shí)候,Visual Studio完全編譯Web Site項(xiàng)目。

這么做可以看到編譯時(shí)的所有錯(cuò)誤。但是,在開發(fā)進(jìn)程中,完全編譯整個(gè)站點(diǎn)會(huì)是相當(dāng)慢的。所以推薦你在開發(fā)調(diào)試中,只編譯當(dāng)前頁(yè)。

部署

因?yàn)樗械念愇募痪幾g成一個(gè)應(yīng)用程序集,當(dāng)你部署的時(shí)候,只需要把這個(gè)應(yīng)用程序集和 .aspx文件、.ascx文件以及其它靜態(tài)內(nèi)容文件一起部署。

這種模型下,.aspx 文件將不被編譯,當(dāng)瀏覽器訪問(wèn)這個(gè)頁(yè)面的時(shí)候,才會(huì)被動(dòng)態(tài)編譯。

不過(guò),如果你使用Web Deployment Projects (一個(gè)Visual Studio 2005的插件,沒(méi)有被默認(rèn)包含到VS2005),你就可以把 .aspx 文件也編譯進(jìn)入一個(gè)應(yīng)用程序集中。

如果你只修改了小小的一行代碼,你也需要把整個(gè)項(xiàng)目的所有代碼都編譯,并且發(fā)布包含所有代碼的這個(gè)應(yīng)用程序集。

使用Visual Studio Publish Website 命令,你可以把.aspx 文件 code-behind 文件編譯成應(yīng)用程序集,所以你看到的編譯后的 .aspx 文件頭發(fā)生了變化。(注意:Build 命令并不會(huì)給你可部署的應(yīng)用程序集)

最新版本的 Publish 將支持僅編譯 code-behind 文件,這樣部署的時(shí)候,將不改變 .aspx 文件。

默認(rèn)是在Bin目錄下預(yù)編譯成幾個(gè)應(yīng)用程序集,典型的是一個(gè)目錄對(duì)應(yīng)一個(gè)應(yīng)用程序集。

fixed-names 部署選項(xiàng)可以讓每一個(gè)WEB頁(yè)面或者每個(gè)WEB用戶控件創(chuàng)建一個(gè)應(yīng)用程序集,這樣每個(gè)頁(yè)面都有一個(gè)可部署的應(yīng)用程序集。但是,fixed-names 部署選項(xiàng)會(huì)增多應(yīng)用程序集的個(gè)數(shù),而且實(shí)際內(nèi)存使用也會(huì)增大。

Visual Studio .NET 2003升級(jí)

因?yàn)楦?/span>VS2003采用了一樣的WEB項(xiàng)目開發(fā)模型,升級(jí)是非常非常簡(jiǎn)單的。

Web site 項(xiàng)目的編譯選項(xiàng)不同導(dǎo)致了它跟Visual Studio .NET 2003WEB項(xiàng)目的極大不同。

雖然微軟提供了一個(gè)轉(zhuǎn)換向?qū)В侨绻愕捻?xiàng)目如果是一個(gè)復(fù)雜的VS2003項(xiàng)目,使用這個(gè)轉(zhuǎn)換向?qū)Ш?,你還需要對(duì)照轉(zhuǎn)換手冊(cè),做很多工作。

如果你要從VS2003升級(jí),建議不要用這種WEB站點(diǎn)開發(fā)模版。而是使用Web application 項(xiàng)目。

選擇何種WEB編程模型

Option or Task

Web Application Projects

Web Site Projects

你有一個(gè)大型的Visual Studio .NET 2003 Web應(yīng)用需要遷移到VS2005。

 

喜歡使用 single-page code 模型來(lái)開發(fā)網(wǎng)站頁(yè)面。而不是使用code-behind 模型來(lái)編寫網(wǎng)站頁(yè)面

 

喜歡采用下面的方式編寫網(wǎng)站:

 

在編寫頁(yè)面時(shí)候,為了可以快速的看到編寫效果,動(dòng)態(tài)編譯該頁(yè)面,馬上可以看到效果,不用編譯整個(gè)站點(diǎn)。

(就是說(shuō),只需要保存文件,然后在瀏覽器中刷新一下,就可以看到自己剛剛做的效果)

需要控制編譯后應(yīng)用程序集的名字

 

需要每個(gè)頁(yè)面產(chǎn)生一個(gè)應(yīng)用程序集

 

WEB頁(yè)面或者WEB用戶控件中需要使用到單獨(dú)的類。

 

需要使用多個(gè)Project來(lái)構(gòu)建一個(gè)Web應(yīng)用。

 

需要處理pre-build post-build 事件(編譯前后需要有自己額外的處理)

 

希望把一個(gè)目錄當(dāng)作一個(gè)WEB應(yīng)用來(lái)處理,而不需要新建一個(gè)Project 文件。

 


感謝各位的閱讀!關(guān)于在VS中新建網(wǎng)站和新建WEB項(xiàng)目有哪些區(qū)別就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

vs
AI