.NET Core 鬧得風生水起的,什么性能甩XX幾條街啊等等。恰逢 Visual Studio 2017 正式版又發布了(不過,macOS 下的 Visual Studio 2017 正式版還沒有發布),就用 Visual Studio Code 測試了一下(網上看了一大堆的內容,都是用之前 .NET Core 測試版寫的,看起來牛頭不對馬嘴,難受,這里記錄一下)。
本文基于 macOS Sierra + Visual Studio Code 進行實驗!
環境
- MacBook Pro 13 Retina 8G/256G
- macOS Sierra 10.12.3
- Visual Studio Code 1.10.2
- .NET Core 1.1
- 有疑問的話,認真找找官方文檔,Hin 有幫助
整體步驟
- 在 macOS 上安裝 Visual Studio Code
- 在 macOS 上安裝 .NET Core(安裝步驟跟著官網走就可以了,關了上面的網頁的同學,可以看這里)
- 用 Visual Studio Code 建立解決方案和項目(MVC 和 Business)
多說一句,MVC 引用 Business 把人快整瘋了,結果很簡單,還是命令不熟悉的原因啊……
劃重點:網上很多文章都說,要引用項目,就修改 project.json 吧啦吧啦的,我可以很負責任的告訴你:最新版本(v1.1)的 .NET Core 的項目結構已經改了,你絕對找不到該文件了!!!
下面正式開始
假設已經全部安裝好了。安裝好之后,各項組件如下:
- OpenSSL 1.0.2k 26 Jan 2017
- git version 2.12.0
安裝好后,上面的組件都可用,只是版本不一定和這里一致,本人有強迫癥,把各個組件都升級了。
打開 Visual Studio Code,然后按快捷鍵:ctrl + `(注意:ctrl 的組合鍵是數字鍵 1 前面那個波浪符號的鍵,不是單引號鍵,和 MySQL 中表名限制符一樣),打開 Vusual Studio Code 的內置終端。
記住幾個常用的終端命令:
-
mkdir
新建目錄(文件夾) -
rm
刪除目錄(文件夾) -
cd
進入目錄(文件夾) -
cd ..
返回上級目錄(文件夾) -
cd \
返回根目錄(文件夾)
1、用 mkdir
命令,建立項目文件夾,并用 cd
命令進入該目錄(這里以 TestMVC 文件夾為例)。
mkdir TestMVC
cd TestMVC
2、開始建立解決方案和項目
記住幾個重要的 .NET Core 的命令:
- 所有的指令,都是以
dotnet
開始的 -
dotnet new
新建內容,可以輸入這個命令,后面不加任何內容,直接回車,可看到幫助說明,就知道了。 -
dotnet new sln
新建解決方案 -
dotnet new mvc
新建 MVC 項目(含項目結構和實例文件) -
dotnet new classlib
新建類庫(即:Business 項目,其它項目以此類推) - 在命令后面添加
-o
參數,表示:新建的內容指定在哪個目錄下(即:Output 的意思)
2.1 進入TestMVC 目錄后,新建解決方案
// 后面無參的話,該命令會生成和當前目錄名稱同名的解決方案
// 如果需要了解各個參數,請詳閱官方文檔
dotnet new sln
2.2 新建 TestMVC.Web 項目,并將其添加到解決方案中
dotnet new mvc -o TestMVC.Web
dotnet sln add TestMVC.Web/TestMVC.Web.csproj
注意:MVC 項目建立好之后,默認框架為:netcoreapp1.1。
2.3 新建 TestMVC.Business 項目,并將其項目添加到解決方案中
dotnet new classlib -o TestMVC.Business
dotnet sln add TestMVC.Business/TestMVC.Business.csproj
注意:Lib 項目建立好之后,默認框架為:netstandard1.4。
2.4 在 TestMVC.Web 項目中添加 TestMVC.Business 的引用(這一步,目前網上很多內容都是老版本的方式,v1.1之后,改動很大,已經刪除了 project.json 這個文件,MS 的意思是直接修改 csproj 文件。這也從側面說明 .NET Core 目前還不能說完全穩定了。)
// 方法一:使用 dotnet 命令自動添加
dotnet add TestMVC.Web/TestMVC.Web.csproj reference TestMVC.Business/TestMVC.Business.csproj
// 方法二:手動修改配置文件添加
// 打開 TestMVC.Web.csproj 文件,添加以下 xml 內容:
<ItemGroup>
<ProjectReference Include="..\TestMVC.Business\TestMVC.Business.csproj" />
</ItemGroup>
2.5 釋放整個項目的“包”,并起飛~~~
dotnet restore // 釋放包
// 由于 run 命令已經包含了編譯動作,所以,就不用單獨 build 命令了
// 這里寫出來,以備不時之需
// dotnet build
dotnet run // 運行
// 如果需要發布,可用 publish 命令
// dotnet publish
2.6 打開瀏覽器,輸入:http://localhost:5000
,即可看到!
寫在最后
- .NET Core 在 macOS 上是基于 Mono 的(估計非 Windows 平臺的都是基于此的),微軟估計會參與優化甚至重寫這個底層,畢竟已經成立了 .NET 基金了。
- .NET Core 引入了 Package(包)的概念,徹底從原來臃腫的大而全的束縛中,解脫出來了,不得不說這是個壯舉!贊一個!
- 正因為解脫出來了,加之新推出的 Web 服務器核心:Kestrel!運行性能等各方面的負擔都要小得多了,速度不謂不快!
- 從原來的引用 DLL 變為現在的引用 Package,才有了上面 2.5 步驟中我稱之為“釋放包”的步驟。
- IIS 在 .NET Core 體系中的角色,已經變為了反向代理(需要安裝:.NET Core Windows Server Hosting 軟件包)的服務器了。所以,在 IIS 中,建立網站選擇應用程序池的時候,不再選擇托管代碼。
最后的最后
.NET 整體框架,貌似還沒完全統一。目前,這些概念貌似還有點容易混淆:
- .NET Stardand(我理解為以后 .NET 框架的最底層)
- .NET Framework(我理解為現行的這個Windows平臺的分發包)
- .NET Core(我理解為跨平臺的分發包)
- XAMARIN(目前本人暫無涉及)
以上這幾個的理解,就是導致了新建的 MVC 和 Lib 的默認框架不一致的原因。
大致結構如下所示(來自官網):
各版本對應關系圖(來自官網):