今天看了Scott關於ASP.NET Core的介紹視頻,發現用命令行一步一步新建項目、添加Package、Restore、Build、Run 執行的實現方式,更讓容易讓我們了解.NET Core的運行機制。
以下是這節課的課程的筆記,給大家分享。
課程准備:
- 安裝.NET Core 運行環境,下載地址:https://www.microsoft.com/net/download
- 安裝Notepad2替代notepad,Notepad2可以識別代碼、以不同的顏色進行區分,下載地址:http://www.flos-freeware.ch/notepad2.html
- 了解幾個cmd命令:
| C: | 打開C盤 | md supermva | 創建supermva文件夾 |
| color a | 命令行顏色改為綠色(更有逼格一些) | cd supermva | 打開supermva文件夾 |
| cls | 清除命令行 | dir | 查看文件目錄 |
| cd.. | 返回上級目錄 | notepad | 直接打開notepad |
| cd\ |
返回到跟目錄 | Tab | 自動補全功能 |
| F7 | 查看歷史命令 | exit | 退出cmd |
一、CMD中查看dotnet core 信息
- >dotnet 查看已安裝的dotnet信息
- >dotnet --version 查看dotnet版本
- >dotnet --help 查看dotnet命令幫助

二、創建Console程序
1)以下步驟實現了Console輸出“Hello World”,也就相當於我們在VS中 創建控制台應用程序 → 還原Nuget包 → Build → 運行
- >md supermva 創建supermva文件夾,
- >cd supermva 定位到supermva文件夾
- >dir 查看文件夾內容(此時為空)
- >dotnet new 查看創建dotnet程序的說明和例子
- >dotnet new console 創建Console應用程序,supermva目錄下生成了:Program.cs , supermva.csproj
- >notepad Program.cs 打開Program.cs文件,看到Main方法中輸出了“Hello World”
- >notepad supermva.csproj 打開.csproj項目文件,看到程序的基本屬性:TargetFramework
- >dotnet restore 還原Nuget包
- >dotnet build build、complie一下
- >dotnet run 運行程序,Console輸出"Hello World"
2)記事本中修改Program.cs,讀取用戶輸入值,然后輸出:
using System;
namespace supermva
{
class Program
{
static void Main(string[] args)
{
string name;
Console.WriteLine("Hello World!");
name=Console.ReadLine();
Console.WriteLine($"Hello {name}"); // 新語法
}
}
}
3)以上步驟的部分截圖如下:
console程序創建成功:生成了Program.cs和.csproj項目屬性文件:


build后生成了bin文件夾:

修改Program.cs保存,dotnet run 重新運行程序:

三、創建Web Application
web應用中,也就是用戶向服務器發出HTTP請求,服務器響應然后返回給用戶請求結果。
項目類文件中,也就需要用到AspnetCore中處理HTTP請求的功能,引用(using)對應的命名空間。
我們再把上面創建的Console應用程序,修改為Web應用程序。
1) 添加Nuget包: Microsoft.AspnetCore
- > dotnet add package Micorsoft.AspnetCore
- > notepad supermva.csproj 打開項目屬性文件,我們看到新增了對Microsoft.AspnetCore的引用
- > dotnet restore 添加新的包的時候,最好restore一下
- > dotnet build
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp1.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspnetCore" Version="1.1.1" />
</ItemGroup>
</Project>
2)添加Startup.cs類 ,接收請求並返回數據。
- > notepad Startup.cs
- > dotnet run
這時候運行程序,還是剛才的Console輸出“Hello World”。這是因為程序的入口是Main方法,還不會執行到Startup.cs類中。
using System;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Builder;
namespace moveToWeb
{
public class Startup
{
public void Configure(IApplicationBuilder app)
{
app.Run(context=>{
return context.Response.WriteAsync("Hello Web");
});
}
}
}
3) 修改Pragram.cs中的Main方法
WebHost: 宿主,Web站點寄宿的地方。
Builder: 創建、建置
Kestrel : A web server for ASP.NET Core based on libuv. 這個是GitHub上對於Kestrel的定義。
所以,對於這段代碼的翻譯就是:借助Kestrel 創建 Web Host , 把請求導向到Startup.cs類中進行處理,然后Build。
using System;
using Microsoft.AspNetCore.Hosting;
using moveToWeb; //記得添加引用
namespace supermva
{
class Program
{
static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseKestrel()
.UseStartup<Startup>()
.Build();
host.Run();
}
}
}
- > dotnet run
提示:Application started, 瀏覽器打開,Startup.cs中輸出的“Hello Web” 已經顯示。

這樣,我們就完成了Web Application的創建。
四、進一步完善Web Application
上面的應用,當我們在修改Startup.cs中的響應輸出內容的時候,“Hello Web”→“Hello ASP.NET Core.” 點擊保存,反復刷新瀏覽器,並沒有輸出我們剛剛修改的值。
這是因為WebHoster並不知道我們的源文件發生了變化。
現在我們添加一個Watcher工具,讓WebHoster實時監控源文件,如果變化則自動重新Run一下,返回最新的響應信息。
1) supermva.csproj中,我們添加DotNet.Watcher工具,注意版本是:Version="1.0.0-*"
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.DotNet.Watcher.Tools" Version="1.0.0-*" />
</ItemGroup>
- >dotnet restore
- >dotnet build
Cli :Command Line Interface
2) 重新運行Web程序,在Startup.cs修改內容即時反應到了瀏覽器中
- >dot watch run

雖然沒有VS簡單方便,但是這樣敲命令+記事本的方法新建一個Console和Web應用,可以一步一步查看每一步命令實現的功能、帶來的變化。讀創建過程中,CMD窗口的提示、讀報錯信息然后修正,這樣循序漸進讓我們更容易了解本質。
"慢即是快”, ASP.NET Core , VS2017 Just Come On !
遇到問題:
1,Unable to load the service index for source https://api.nuget.org/v3/index.json
→ 可以FQ,或者把Restore命令的參數修改為Cnblogs 的 Nuget地址: > dotnet restore -s https://nuget.cnblogs.com/v3/index.json
2, 如果命令行中提示錯誤,看一下錯誤基本上能找到問題在哪里。如果添加新的Nuget包,記得再Restore一下。
MVA課程地址:
Introduction to ASP.NET Core with Visual Studio 2017
Learn what ASP.NET Core is, how to get and install it, and how to create a very quick sample application.
參考網站:
1) MVA: http://mva.microsoft.com
2) Docs : https://docs.microsoft.com
3) Net : https://www.microsoft.com/net
4) KestrelHttpServer : https://github.com/aspnet/KestrelHttpServer/
4) Scoot Blog:http://www.hanselman.com/
5) Nuget : NuGet鏡像上線試運行
本文地址:博客園 i-shanghai

