一、前言
1、本文主要內容
- Visual Studio Code 開發環境配置
- 使用 ASP.NET Core 構建Web應用
- ASP.NET Core Web 應用啟動類說明
- ASP.NET Core Web 項目結構說明
2、本教程環境信息
軟件/環境 | 說明 |
---|---|
操作系統 | Windows 10 |
SDK | 2.1.401 |
ASP.NET Core | 2.1.3 |
IDE | Visual Studio Code 1.27 |
瀏覽器 | Chrome 69 |
3、前置知識
你可能需要的前置知識
- VS Code + .NET Core快速開始
https://ken.io/serie/dotnet-core-quickstart
- C#語法學習
http://www.runoob.com/csharp/csharp-tutorial.html
二、環境安裝與配置
1、SDK 下載與安裝
- 下載
下載地址:https://www.microsoft.com/net/download
跨平台,根據自己的需求選擇即可。
這里我下載的是:SDK 2.1.401,你可以選擇2.1.x的最新版本
- 安裝
略,一直下一步即可,沒什么需要特別注意的。
如果你真想了解,可以參考:https://ken.io/note/dotnet-core-qucikstart-helloworld-windows
2、VS Code下載&安裝
- VS Code 下載
下載地址:https://code.visualstudio.com/download
反正VS Code跨平台,根據自己的需要選擇就可以了,
- VS Code 安裝
略,一直下一步即可,沒什么特別注意的。
如果你用的macOS,直接拖動到應用程序目錄即可,更簡單快捷。
3、VS Code配置
- 基礎擴展安裝
擴展 | 說明 |
---|---|
C# | 包括語法高亮顯示、智能感知、定義、查找所有引用等。調試支持。網絡核心(CoreCLR)。 |
Chinese (Simplified) | 簡體中文補丁包 |
快捷鍵(Ctrl+Shift+X)進入擴展管理頁,直接搜索擴展名安裝即可,或者點擊左側工具欄圖標進入擴展管理頁
macOS版本快捷鍵是 Shift+Commnad+X
三、VS Code 開發 ASP.NET Core Web項目
1、項目創建
- 通過命令行創建項目
#創建項目目錄 mkdir projects #進入項目目錄 cd projects #創建項目 dotnet new web -n helloweb
2、VS Code打開項目
菜單:文件->打開,選擇項目目錄打開項目
項目打開后,VS Code會檢測到缺少兩個必須的Package:OmniSharp、.NET Core Debugger
並且會自動幫你安裝
Downloading package 'OmniSharp for Windows (.NET 4.6 / x64)' (31017 KB).................... Done! Installing package 'OmniSharp for Windows (.NET 4.6 / x64)' Downloading package '.NET Core Debugger (Windows / x64)' (41984 KB).................... Done! Installing package '.NET Core Debugger (Windows / x64)' Finished
安裝完成后VS Code會提示:
Required assets to build and debug are missing from ‘helloweb’. Add them?
選擇Yes即可。
這時候,可以看一下左側資源管理器,我們可以看到.vscode目錄添加了兩個配置文件:launch.json,tasks.json。
項目的編譯和調試配置文件就已經准備好了
3、VS Code啟動項目
我們直接按下F5,或者菜單:調試->啟動調試啟動項目
ASP.NET Core 默認綁定是5001端口,而且ASP.NET Core 2.1之后默認綁定了HTTPS,項目啟動成功后,VS Code會幫我們打開默認瀏覽器並訪問:https://localhost:5001
因為我們並沒有配置SSL證書,所以瀏覽器會發出警告⚠️,以Chrome為例:
這時候,我們點擊高級,救護出現繼續訪問的入口
我們點擊繼續訪問,就會出現Hello World!
4、修改綁定協議HTTPS為HTTP
接着我們可以修改配置去掉HTTPS協議綁定
打開Properties/launchSettings.json文件
{
"iisSettings": { "windowsAuthentication": false, "anonymousAuthentication": true, "iisExpress": { "applicationUrl": "http://localhost:53122", "sslPort": 44309 } }, "profiles": { "IIS Express": { "commandName": "IISExpress", "launchBrowser": true, "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } }, "helloweb": { "commandName": "Project", "launchBrowser": true, "applicationUrl": "https://localhost:5001;http://localhost:5000", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } } } }
iisSettings、profiles.helloweb配置節點都有啟動綁定配置,因為VS Code啟動項目默認是不通過IIS來host的,iisSettings選項我們忽略即可。
"helloweb": { "commandName": "Project", "launchBrowser": true, "applicationUrl": "http://localhost:5001", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } }
將applicationUrl修改為http://localhost:5001
然后重啟項目(Ctrl+Shift+F5)機會看到干凈純潔的Hello World!
5、項目啟動簡介
- 應用程序入口類
public class Program { public static void Main(string[] args) { CreateWebHostBuilder(args).Build().Run(); } public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>(); }
在應用啟動的時候,會執行CreateWebHostBuilder方法,在這個方法中通過類Startup
創建了默認了HostBuilder
- 應用啟動類
public class Startup { ConfigureServices(IServiceCollection services) { } public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.Run(async (context) => { await context.Response.WriteAsync("Hello World!"); }); } }
方法 | 說明 |
---|---|
ConfigureServices | 用於配置應用啟動時加載的Service |
Configure | 用於配置HTTP請求管道 |
web項目模板默認在項目啟動的時候調用IApplicationBuilder.run方法,在當前HTTP上下文(HttpContext)中輸出了Hello World!
context.Response.WriteAsync(“Hello World!”);
四、備注
1、項目結構說明
根目錄/文件 | 說明 |
---|---|
.vscode目錄 | VS Code項目配置目錄,相當於.vs、.idea文件夾 |
bin目錄 | 編譯輸出目錄,相當於Java項目的target目錄 |
obj目錄 | 編譯配置與中間目錄,用於存放編譯配置與編譯中間結果 |
Properties目錄 | 用於存放項目配置 |
wwwroot目錄 | 靜態文件目錄 |
helloweb.csproj文件 | 項目描述文件 |
Program.cs文件 | 應用程序入口類文件 |
Startup.cs文件 | ASP.NET Core Web應用啟動類文件,用於項目啟動前進行相關配置 |
2、附錄
- 本文代碼示例
https://github.com/ken-io/asp.net-core-tutorial/tree/master/chapter-01
本文首發於我的獨立博客:https://ken.io/note/asp.net-core-tutorial-web-helloworld