ASP.NET Core 1.0 入門——了解一個空項目¶
警告
您當前查看的頁面是未經授權的轉載!
如果當前版本排版錯誤,請前往查看最新版本:http://www.cnblogs.com/qin-nz/p/aspnet5-empty-project-introduction.html
提示
更新時間:2015年12月12日。
ASP.NET Core 1.0 RC1 發布已經有一個星期了,因為以前一直是bate版,很多東西都會變,因此一直沒有寫隨筆。 從今天開始,我將為大家帶來一系列的 ASP.NET Core 1.0 教程。
注解
如果你在使用 Mac OSX ,可以參考 這篇文章 ,來配置環境。
創建一個空項目¶
雖然相信大家不會只創建個Empty的項目,但只要這個最簡單,適合作為入門討論。 首先使用 Visual Studio 2015 創建一個空的項目。
注解
如果你是在使用 Linux/Mac OS,請參考 Your First ASP.NET Core 1.0 Application on a Mac
Visual Studio 2015 在Web目錄下有三項可選,選擇第一項會開啟一個向導,在這里可選 ASP.NET 4.5 或者 ASP.NET Core 1.0 的項目。而后兩項是用ASP.NET Core 1.0 創建類庫和命令行程序。

選擇 ASP.NET Core 1.0 Empty 項目。

解決方案目錄結構¶
創建好解決方案后,在解決方案文件夾結構如下:
提示
只用在Windows平台的 Visual Studio 2015 才有解決方案的概念,對於跨平台的 Visual Studio Code 是沒有解決方案的概念。 同時,僅通過 Visual Studio 2015 創建的才有解決方案,否則只有項目文件。
- src
- global.json
- {your-solution-name}.sln
{your-solution-name}.sln
這個文件是用於Visual Studio 識別整個解決方案的,和其他類型的項目沒有區別,就不做介紹了。
global.json¶
global.json
文件用於定義解決方案級別的設置,作用和 {your-solution-name}.sln
相同。 那為什么還要再定義一次呢? ASP.NET Core 1.0 的目標是在全平台運行,而在非Windows平台是沒有強大的IDE的,只能靠一些文本編輯器解決,此時 {your-solution-name}.sln
文件便沒有意義了。 global.json
默認的文件內容如下:(其中version的值取決你安裝的版本)
1 2 3 4 5 6 |
{
"projects": [ "src", "test" ],
"sdk": {
"version": "1.0.0-rc1-update1",
}
}
|
projects
用於定義相關的項目所屬的文件夾,也就是在哪些子文件夾下面去尋找項目,默認包含 src
文件夾。 sdk
用於表明使用的SDK版本,包含 version
, architecture
, runtime
三個子項。 在Windows下, runtime
可選 coreclr
和 clr
(默認),在Linux/Mac 下,可選 coreclr
和 mono
(默認)。 由於ASP.NET Core 1.0 開始,默認的runtime非常精簡,幾乎什么都不包含,因此需要以Nuget包的方式下載,下載地址默認在系統文件夾(具體在哪未知)。 我們可以通過 packages
強制指定下載的的文件都放在哪里。 下面是一個較完整的示例:
1 2 3 4 5 6 7 8 9 |
{
"projects": [ "src", "test" ],
"packages": "C:\\Program Files (x86)\\Microsoft Web Tools\\DNU",
"sdk": {
"version": "1.0.0-rc1-update1",
"architecture": "x64",
"runtime": "coreclr"
}
}
|
項目目錄結構¶
討論完解決方案級別的文件結構,讓我們再看看項目級別。
注解
對於 Mac/Linux 可以直接從這里看起。
首先,進入到 src\{your-project-name}
文件夾。 文件目錄如下:
- PropertieslaunchSettings.json (僅 Windows 平台有)
- wwwroot
- wwwroot\web.config
- project.json
- project.lock.json (運行過
dnu restore
生成) - Dockerfile (Windows 平台沒有)
- {your-project-name}.xproj (僅 Windows 平台有)
- Startup.cs
這里面,wwwroot就是運行時網站的根目錄(可以在 project.json
內重置)。 Properties
文件夾下的 launchSettings.json
是可以通過 Visual Studio 的圖形化界面修改的,就不詳細說明了。 project.lock.json
是根據 project.json
文件生成的,重新生成可在項目目錄下使用命令 dnu restore
完成,Visual Studio 2015 會在必要時自動運行此命令。 下面重點介紹 project.json
和 Startup.cs
兩個文件。
project.json¶
project.json
是項目文件,主要包括了對項目的配置(如應該對哪些文件進行編譯,輸出時保留哪些文件,項目的依賴)和生成dll的元數據(版本號,標題,作者,版權信息等)。
小技巧
如果需要向 Visual Studio 2015 導入其他平台創建的項目,可以選擇 project.json 作為項目文件,隨后 Visual Studio 2015 會生成 .xproj
的項目文件。
默認的文件如下(綜合 Windows平台與Mac平台):
比較重要(開發中常用)的是 dependencies
, commands
, frameworks
。
dependencies
包含了項目的引用及其版本,因為是空項目,只引用了兩個Web服務器,IIS和Kestrel。其中Kestrel是跨平台的Web服務器。
注解
dependencies
僅包含了服務器端的引用,如需設置瀏覽器端的JS/CSS引用,請參考 ASP.NET Core 1.0 中的依賴項管理 。
frameworks
包含了需要編譯的框架,當在非Windows平台上運行時,請只保留 "dnxcore50":{}
。
commands
中包含的若干命令是通過 dnx
命令運行時的可用參數。如使用 dnx web
使用默認參數啟動Kestrel服務器(監聽 http://localhost:5000 ) 也可以使用以下設置同時監聽5000和5001兩個端口。
小技巧
這種設置還可以保證所有到達5000和5001的請求全部都能被接受,而不要求url中為 localhost
。
"commands":{
"web":"Microsoft.AspNet.Server.Kestrel --server.urls http://*:5000;http://*:5001"
}
當然也可以通過另外的json文件定義這一行為,否則每次更改都需要運行 dnu restore
命令。
"commands": {
"web": "Microsoft.AspNet.Hosting --config hosting.json",
}
hosting.json
文件如下:
{
"server": "Microsoft.AspNet.Server.Kestrel",
"server.urls": "http://*:5000"
}
Startup.cs¶
請參考我另一篇博文 ASP.NET Core 1.0 入門——Application Startup
ASP.NET Core 1.0 入門——了解一個空項目 由 勤奮的小孩 創作,采用 知識共享 署名-相同方式共享 4.0 國際 許可協議進行許可。
本許可協議授權之外的使用權限可以從 http://space.cnblogs.com/msg/send/qin-nz 處獲得。