文章出處
文章列表
ASP.NET 5 在項目結構上做了很大的改變,我們以前熟悉的目錄結構與項目文件內容都不太一樣了,本篇文章帶大家了解 ASP.NET 5 到底跟以前有哪些不一樣的地方。
我們先用 Visual Studio 2015 建立一個全新的 ASP.NET 5 網站項目,打開VS2015,創建Web項目,.net framework 選擇.net 4.5 以上,選擇ASP.NET Web Application,在彈出的窗口里選擇ASP.NET 5 Website模板創建項目,圖示如下:
創建好項目后,并參考下圖打開項目的所在文件夾,解決方案目錄結構:
實際文件夾的目錄結構,我們看到有幾個文件夾,下面我們進行逐一介紹
- .vs 隱藏文件夾:用來保存原本我們在VS2003-2013項目目錄中會看到的 *.suo 文件,這個文件主要用來保存 Visual Studio 2015 操作過程的一些狀態,例如你已經開啟的檔案列表等臨時的信息。如果 ASP.NET 5 網站使用 IISExpress 進行排錯,IISExpress 所需要的 applicationhost.config 配置文件也會放在 .vs\config\ 目錄下。 這些臨時的文件不應該放入到源代碼版本控制,這個算是一個改進。
- artifacts 文件夾:用來保存網站構建過程中需要臨時保存的元文件案與輸出文件,也就是以前在項目中常看到的 bin 與 obj 目錄,現在都統一搬到這個文件夾下。這個文件夾不應該加入版本控制,這又是一大改進。
- src 文件夾:用來放置該方案里的所有項目,所以主要的源代碼都會放在這個目錄下,該目錄下每個目錄就是一個獨立的項目。
- *.sln 項目文件:這個文件就不用介紹了,跟之前我們常看到的項目解決方案是完全一樣的。
-
global.json 全局配置文件:這個文件通常都跟項目解決方案放在同一層文件夾下,用來給解決方案參考用的。主要用來定義要「自動導入」到解決方案文件中的路徑列表與 sdk 的默認版本。如下圖的 "projects" 參數就有列出設定的會導入入 src 與 test 文件夾下所有的項目。舉例來說,如果你想將另一個解決方案目錄下的某一個 ASP.NET 5 項目遷移到目前項目下,只要將該項目目錄 ( src\projectName ) 直接移動到目前方案的 src\ 目錄下即可,其他甚么都不用設置!
接著我們進入 ASPNET5WebApp 項目文件夾 (如下圖),項目的目錄結構也跟之前差別很大哦,我一樣由上至下分別介紹一遍:
- bower_components文件夾:由于 Visual Studio 2015 與 Web 前端最常用的 bower 工具整合在一起,未來所有的「前端」套件通過 bower 命令進行安裝時,都會自動將套件安裝到bower_components文件夾之中。這個文件夾不應該加入版本控制。
-
Compiler文件夾:ASP.NET MVC 6 ( 等同于 ASP.NET 5 ) 開始,將支持 Razor 預先編譯功能,可以讓你在部署網站時預先編譯所有 Razor頁面,以提升網站執行的速度。在這個文件夾中有個Compiler\Preprocess\RazorPreCompilation.cs文件,可以讓你設置是否要啟用 Razor 自動編譯功能。(只要取消注釋掉的程序代碼就可以啟用 Razor 預先編譯機制)
- Controllers文件夾:這個是 ASP.NET MVC 6 的 Controllers 專用文件夾。
- Migrations文件夾:這個是 Entity Framework 的 DbMigration 專用文件夾。
- Models文件夾:這個是 ASP.NET MVC 6 的 Models 專用文件夾。
- node_modules文件夾:由于 Visual Studio 2015 將 nodejs 常用的 npm 套件管理工具整合在一起,未來所有的 npm 組件都可以通過 npm 命令進行安裝,且這些組件默認的設置都會安裝到node_modules文件夾之中。注意這個文件夾不應該加入版本控制。
- Properties文件夾:這個文件夾跟之前差不多,也是用來保存一些項目的特別設置,例如網站發行配置文件等。但除此之外,還多了一個 AppSettings.cs 類別文件,這個文件主要目的是用來定義一個 AppSettings (應用程序設定) 的模型類 (Model Class),讓你用強型別的方式讀取應用程序配置參數。
- Views文件夾:這個是 ASP.NET MVC 6 的 Views 專用文件夾。
- wwwroot文件夾:這個文件夾就是全新的東西了,未來的 ASP.NET 5 只要是「靜態文件」,例如 js, css, images, … 諸如此類的靜態文件,都會統一放到這個文件夾里面,避免前端文件與后端程序代碼混在一起的情況。ASP.NET5是徹底模塊化了,IIS不再是運行MVC程序的唯一容器,任何兼容DNX的運行容器都可以運行MVC程序,程序發布包被分為approot和wwwroot兩個部分,分別存放應用程序集(或源碼)和靜態文件,從而做到更好的分離。
- *.xproj文件:這是新一代的項目文件,有別于以前的*.csproj與*.vbproj項目檔,這個項目文件小多了,內容格式差不多,一樣是 XML 的格式,一樣是 MSBuild 會去參考的內容,但最大的不同之處在于,新版*.xproj不用再明確列出所有的文件清單,所有項目中的文件不再需要特別加入或移除,只要檔案出現在項目目錄中,文件就會自動被加入項目里!進一步強化約定勝于配置原則,項目中用不到的文件乖乖刪除吧,這樣就可以把項目中很多不該存在的垃圾文件清理了,相信大家對這點很有感觸吧。
- *.xproj.user文件:這個文件用來記錄項目在 Visual Studio 2015 開發工具里的一些狀態,例如你已經開啟的文件列表等暫存信息。這個文件不應該加入版本控制。
- bower.json文件:這是 bower 工具專用的配置文件,與 ASP.NET 5 沒有直接關系,相關文件請參考這里:http://bower.io/docs/config/
- config.json文件:這是 ASP.NET 5 的項目配置文件,所有應用程序參數設置與連接字符串都會定義在此。
- gulpfile.json文件:這是 gulp 前端流程管理工具專用的配置文件,可以幫助你完成一些自動化的工作。這文件與 ASP.NET 5 沒有直接關系,相關文件請參考這里:https://github.com/gulpjs/gulp/blob/master/docs/getting-started.md
- MessageServices.cs文件:這個文件是當你在 ASP.NET Identity 啟用二階段驗證 (two-factor authentication) 時,讓你寫發送 Email 或 SMS 短信程序代碼的地方。
- package.json 文件:這是 nodejs 的 npm 工具專用的配置文件,與 ASP.NET 5 沒有直接關系,相關文件請參考這里:https://docs.npmjs.com/
- project.json文件:這個文件是重要的 ASP.NET 5 項目配置文件,許多重要的設定都從 web.config 改到這個檔案來了,如果要寫好 ASP.NET 5 勢必得深入了解 project.json 文件的配置方式,詳細文件請參考:https://github.com/aspnet/Home/wiki/Project.json-file
- project.lock.json文件:由于在 project.json 文件里面會定義項目需要加載的 NuGet 套件,而且 Visual Studio 2015 也會自動加載套件的依賴套件,因此每次項目在新的環境構建時,很有可能會花上 3 ~ 5 倍的時間進行恢復套件 (Package Restore),這個 project.lock.json 文件比較像是以前的 packages.config 文件,明確列出所有需要加載的 NuGet 套件有哪些。這個文件是由 Visual Studio 2015 自動生成的,但建議加入版本控制,以縮短 CI 構建的時間。
- Project_Readme.html文件:項目說明檔,該網頁有許多參考鏈接,可以讓你深入了解 ASP.NET 5 的開發方式。
- Startup.cs文件:這個文件是重要的 ASP.NET 5 網站啟動入口,由于 ASP.NET 5 執行生命周期的改變,以前的 global.asax 文件已經成為過往云煙不復存在了,取而代之的就是 Startup.cs 文件里的 Startup 類。換句話說,未來 ASP.NET 5 應用程序啟動時,第一時間就是從 Startup 類開始執行的!
本文概要的介紹 ASP.NET 5 全新的項目目錄結構與 xproj 項目文件,以及一些非常重要的文件,都是需要特別額外學習的部分,博客園的"湯姆大叔"通過閱讀微軟的源碼以及網絡上的一些文章給大家整理了一個系列入門教程。且其中的代碼都在VS 2015 RC中進行過驗證。作者也為這些文章建立了一個目錄 http://www.cnblogs.com/TomXu/p/4496545.html ,這個系列文章我也在微信公眾號opendotnet 上轉載過,歡迎關注微信公眾號opendotnet,通過歷史信息閱讀:
文章列表
全站熱搜