ASP.NET Core 1.0 入門——了解一個空項目


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 創建類庫和命令行程序。

https://qinblog.blob.core.windows.net/images/create-empty-project-0.png

選擇 ASP.NET Core 1.0 Empty 項目。

https://qinblog.blob.core.windows.net/images/create-empty-project-1.png

解決方案目錄結構

創建好解決方案后,在解決方案文件夾結構如下:

提示

只用在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 可選 coreclrclr (默認),在Linux/Mac 下,可選 coreclrmono (默認)。 由於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.jsonStartup.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 處獲得。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM