亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

解讀ASP.NET 5 & MVC6系列(2):初識項目

2019-11-17 02:05:56
字體:
來源:轉載
供稿:網友

解讀asp.net 5 & MVC6系列(2):初識項目

2015-05-14 09:08 by 湯姆大叔, ... 閱讀, ... 評論, 收藏, 編輯

初識項目

打開VS2015,創建Web項目,選擇ASP.NET Web application,在彈出的窗口里選擇ASP.NET 5 Website模板創建項目,圖示如下:

我們可以看到,此時Web Forms/MVC/Web API復選框都選擇不了,原有是因為在ASP.NET 5中做了大量更改,移除了Web Forms功能,將MVC、Web API、Web Pages這些功能合在了一起,所以自然就不需要這些復選框了。另外由于是CTP版,所以目前還沒有提供單元測試項目的創建。

新創建的項目在VS的解決方案目錄結構和實際文件夾的目錄結構分別如下:

注意:上圖是在VS 預覽版中的截圖,在新版的RC版本中,默認的客戶端構建工具變成了gulp(即配置文件是gulpfile.js),而非原來的grunt了。

兩個圖的差異非常大,我們來一一分析一下這些差異。

項目結構差異

通過圖示,我們可以看到,在根目錄中,不僅項目文件從從csPRoj變成了xproj,還少了很多之前的文件(如web.config),但也多了很多不同的文件以及文件夾,我們先列出這些不同的文件盒文件夾,再來一一講解這些內容。

文件/文件夾功能描述
config.json程序的配置文件,類似于web.config。
project.json該項目的主要配置,主要是負責程序集、項目部署等方面。部分功能類似于之前的package.config。
package.jsonnpm的配置文件,npm是基于Nodejs的包管理器。
bower.jsonBower管理器的配置文件,Bower是專門用于管理前端項目的包管理器。
gulpfile.js是gulp的配置文件,gulp是基于Nodejs的javascript任務管理器,在ASP.NET5中主要是用于管理NPM和Bower中的內容。
Stratup.cs程序啟動入口,類似于Global.asax。
Project_Readme.html項目說明文件,沒啥用。
wwwroot靜態資源文件(如CSS、圖片、js)的存放目錄。
DependenciesBower和NPM的依賴管理包。
References程序集引用,和以前的類似,但現在有了版本之分(如ASP.NET 5.0和ASP.NET Core 5.0)。

project.json

project.json是項目的核心配置文件,示例如下:

{    "webroot": "wwwroot",    "version": "1.0.0-*",    "dependencies": {        "Microsoft.AspNet.Diagnostics": "1.0.0-beta4",        "Microsoft.AspNet.Mvc": "6.0.0-beta4",        "Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-beta4",        "Microsoft.AspNet.Server.IIS": "1.0.0-beta4",        "Microsoft.AspNet.Server.WebListener": "1.0.0-beta4",        "Microsoft.AspNet.StaticFiles": "1.0.0-beta4",        "Microsoft.AspNet.Tooling.Razor": "1.0.0-beta4",        "Microsoft.Framework.ConfigurationModel.Json": "1.0.0-beta4",        "Microsoft.Framework.CodeGenerators.Mvc": "1.0.0-beta4",        "Microsoft.Framework.Logging": "1.0.0-beta4",        "Microsoft.Framework.Logging.Console": "1.0.0-beta4",        "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-beta4",        "Microsoft.Framework.ConfigurationModel.UserSecrets": "1.0.0-beta4"    },    "commands": {        "web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5000",        "gen": "Microsoft.Framework.CodeGeneration"    },    "frameworks": {        "dnx451": { },        "dnxcore50": { }    },    "exclude": [        "wwwroot",        "node_modules",        "bower_components"    ],    "publishExclude": [        "node_modules",        "bower_components",        "**.xproj",        "**.user",        "**.vspscc"    ],    "scripts": {        "postrestore": [ "npm install", "bower install" ],        "prepare": [ "gulp copy" ]    }}

由于該文件的詳細參數非常多,具體詳細內容請參考http://go.microsoft.com/fwlink/?LinkID=517074 ,在這里我們主要講解如下3個類型的內容。

webroot

webroot是指定該web項目的靜態文件存放地址,目前是用于在發布的時候講該目錄中的內部發布的正確的位置(詳細內容可以在部署發布章節中找到)。注意BookStore解決方案中帶有地球圖標的wwwroot目錄是真實的文件夾路徑,我們可以對其進行修改,比如將其修改為wwwroot1,那么相應的webroot的值也應該修改為wwwroot1,因為gulpfile.js里代碼要通過project.webroot來使用該目錄,以便能夠將bower管理的前端庫都復制到正確的目錄。

程序集管理

在解決方案的References節點點,我們看到有兩個分類,分別是:DNX 4.5.1和DNX Core 5.0,其中DNX Core 5.0就是我們所說的云優化版(即可以在其它操作系統下部署的跨平臺版),而DNX 4.5.1則是和之前版本一樣的全功能版,這兩個版本的程序集是通過dependencies節點進行管理的。

在一級dependencies節點,主要是定義該項目的通用程序集引用以及版本,而不同的版本的程序集則在framworks下的各版本下的dependencies節點進行維護,比如:

"frameworks": {    "dnx451": {        "dependencies": {"log4net": "2.0.3"} /* 只在全功能版中引入log4net程序集*/    },    "dnxcore50": { }}

上述兩種類型的程序集在維護的時候,都有智能提示(包括程序集名稱以及版本號),在當定義完自己要用的程序集并保持之后,系統會自動從Nuget上下載所需要的程序集,你也可以通過右鍵References選擇Restore Packages來更新所有的程序集引用。同時你依然可以通過右鍵References的形式通過Nuget來管理這些程序集。

腳本事件

新版的VS2015允許我們在build解決方案之前、之后、過程;下載程序集之前、之后;更新程序集之前、之后自定義一些基于Nodejs的自定義事件來執行。該事件在project.json中的定義節點是scripts,示例如下:

"scripts": {    "postrestore": [ "npm install" ],  // 在更新所有的程序集之前執行npm install事件    "prepare": [ "gulp copy" ]    // 在打開解決方案之前,執行gulp任務,調用bower的install方法。}

具體的事件名稱如下:

時機描述
prebuild構建之前執行
postbuild構建之后執行
prepackpacking之前執行
postpackpacking之后執行
prerestorerestoring packages之前執行
postrestorerestoring packages之后執行

package.json

package.jsonNPM管理器的配置文件,由于在VS2015默認就深度集成了Nodejs,而NPM又是Nodejs的默認包管理器,所以所有基于Nodejs的包都要在這里進行配置。該配置文件的默認配置如下:

{    "name": "ASP.NET",    "version": "0.0.0",    "devDependencies": {        "gulp": "3.8.11",//gulp任務管理器        "rimraf": "2.2.8" // 遞歸刪除文件的nodejs包    }}

上述代碼中的rimraf是一個遞歸刪除文件的nodejs包,我們也可以引用其他插件,像project.json文件中管理程序集一樣,在package.json文件中來管理前端程序的各種包,例如jquery,bootstrap等等,比如我們要安裝一個express包,只需要在json文件中添加一個express字符串鍵,并選擇器版本就可以了,系統會自動下載該NPM包并顯示在解決方案的Dependencies->NPM節點下。

注意:已經安裝的包不能自動移除(即不能通過在JSON中移除配置),需要右鍵執行該包,并手工卸載。

bower.json

所有的前端包都配置子bower.json文件中,比如你需要的jquery、bootstrap、angular等等,其管理方式與project.json里的程序集和package.json里的npm包一樣,都是通過在dependencies節點下聲明包的名稱和版本來實現的。

我們可以在此聲明一個angular包,保存以后就可以看到在解決方案Dependencie->Bower節點下該angular已經自動下載好了,編譯項目,就可以看到在wwroot/lib也可以看到angular文件夾以及相應的文件了。

在bower.json還有一個exportsOverride節點非常重要,他擴展了原來bower的前端文件copy機制,默認情況下bower只會復制main節點定義的文件。但有時候我們要復制的文件可能不止這些,所以grunt-bower-task插件就擴展了該功能,定義了這個exportsOverride節點,其使用規則如下:

  1. 如果Bower包定義了main文件節點,就將其復制到wwwroot/lib下。
  2. 如果Bower包定義了的main節點為空,則將整個包的目錄都復制到wwwroot/lib下。
  3. 如果定義了exportsOverride節點,則只會把該節點指定的文件復制到wwwroot/lib下。

注意,exportsOverride節點中定義的key/value,其中key表示要文件復制目標(即wwwroot/lib下)對應包名下的子目錄,value表示源文件目錄或文件。例如:

"bootstrap": {    "js": "dist/js/*.*", //將dist/js/下的所有文件,復制到wwwroot/lib/b
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩有码片在线观看| 51视频国产精品一区二区| 久久久在线观看| 午夜精品www| 国产国语刺激对白av不卡| 深夜福利日韩在线看| 日韩av不卡在线| 久久久av电影| 91国产视频在线播放| 夜夜躁日日躁狠狠久久88av| 亚洲视频在线视频| 国产精品久久一区主播| 亚洲第一网站免费视频| 亚洲色图13p| 亚洲午夜国产成人av电影男同| 中文字幕av一区中文字幕天堂| 亚洲欧美在线一区| 国产精品福利在线观看网址| 国产91在线播放九色快色| 亚洲国产精久久久久久| 九九精品在线观看| 国产精品9999| 国产日产欧美a一级在线| 97视频在线观看免费高清完整版在线观看| 成人黄色影片在线| 青草热久免费精品视频| 欧美日韩精品在线视频| 亚洲成人黄色网址| 日韩国产激情在线| 亚洲精品福利在线| 国产成人精彩在线视频九色| 亚洲第一福利在线观看| 亚州精品天堂中文字幕| 日韩精品视频在线观看网址| 97视频在线观看免费| 欧美超级免费视 在线| 欧美综合激情网| 5278欧美一区二区三区| 欧美国产第二页| 国产精品网红直播| 欧美在线xxx| 91精品在线影院| 欧美电影在线观看完整版| 日韩经典第一页| 国产精品嫩草影院久久久| 国产精品偷伦免费视频观看的| 欧美激情第三页| 精品在线观看国产| 亚洲日本成人女熟在线观看| 91在线国产电影| 国产精品女主播视频| 亚洲一区二区三区乱码aⅴ蜜桃女| 欧美大尺度电影在线观看| 久久久久中文字幕2018| 69国产精品成人在线播放| 日韩欧美国产网站| 国产成人一区二区三区小说| 国产一区二区三区在线播放免费观看| 91精品视频专区| 国产99视频精品免视看7| 在线成人激情视频| 精品高清美女精品国产区| 国产精品高潮呻吟久久av黑人| 午夜美女久久久久爽久久| 亚洲情综合五月天| 国产精品男人的天堂| 疯狂做受xxxx高潮欧美日本| 国产一区深夜福利| 亚洲欧美日韩国产成人| 亚洲精品网站在线播放gif| 国产做受高潮69| 97在线精品国自产拍中文| 国产美女久久久| 国产成人avxxxxx在线看| 黑人巨大精品欧美一区二区一视频| 久久影院模特热| 欧美国产精品人人做人人爱| 97婷婷涩涩精品一区| 亚洲加勒比久久88色综合| 成人av在线网址| 日韩专区在线观看| 中文字幕亚洲一区在线观看| 亚洲第一区在线| 国产精品久久久999| 国产成人a亚洲精品| 欧美大片大片在线播放| 欧美性猛交xxxxx水多| 久久天天躁狠狠躁夜夜av| 国产综合在线观看视频| 国产欧美中文字幕| 亚洲性69xxxbbb| 欧美一级电影在线| 亚洲午夜精品久久久久久久久久久久| 精品中文字幕在线观看| 午夜免费在线观看精品视频| 国产91精品不卡视频| 色婷婷av一区二区三区在线观看| 亚洲第一中文字幕在线观看| 中国china体内裑精亚洲片| 浅井舞香一区二区| 欧美激情成人在线视频| 成人在线视频福利| 久久国产精品影片| 国语自产精品视频在线看抢先版图片| 日本电影亚洲天堂| 欧美日韩另类字幕中文| 精品毛片三在线观看| 一区二区三区回区在观看免费视频| 国产精品高潮呻吟久久av黑人| 黑人精品xxx一区一二区| 国产欧美精品在线| 亚洲精品成人网| 国产精品成人一区二区三区吃奶| 色悠悠久久久久| 精品视频久久久久久| 欧美xxxx14xxxxx性爽| 国内外成人免费激情在线视频| 国产精品成人一区| 亚洲第一精品福利| 国产欧美精品在线播放| 日韩亚洲精品电影| 91日韩在线视频| 国产香蕉一区二区三区在线视频| 91精品国产自产在线老师啪| 性金发美女69hd大尺寸| 91在线视频成人| 亚洲日本欧美日韩高观看| 日韩精品视频在线播放| 国产日韩精品视频| 精品网站999www| 亚洲影视中文字幕| 亚洲一区二区久久久久久| 亚洲va码欧洲m码| 国产精品第一第二| 欧美日韩高清在线观看| 国产精自产拍久久久久久| 亚洲国产天堂久久国产91| 91久久久精品| 欧美日韩国产色视频| 97在线视频国产| 亚洲aⅴ男人的天堂在线观看| 亚洲乱码一区二区| 欧美日韩中文在线| 青青青国产精品一区二区| 国产视频亚洲视频| 在线精品国产成人综合| 亚洲人成电影在线| 欧美一区二粉嫩精品国产一线天| 欧美视频13p| 中文国产亚洲喷潮| 伊人伊成久久人综合网小说| 91亚洲精品久久久久久久久久久久| 久久人人爽亚洲精品天堂| www亚洲精品| 成人激情在线播放| 欧美精品中文字幕一区| 精品成人av一区| 国产v综合ⅴ日韩v欧美大片| 国产欧美久久久久久| 夜色77av精品影院| 伊人激情综合网| 国产精品久久久久高潮| 日韩有码在线播放| 欧美激情欧美激情|