.NET Core學習筆記(1)——在Linux下執行Console APP

樓上那個蜀黍發表於2019-07-11

都說.NET Core可以跨平臺,說實話Linux我們也不太懂,我們也不敢問。怎樣把一個簡單的Console App在Linux下跑起來,真是費了我一番功夫。特做此篇以供指北。

.NET Core的大餅我就不替某軟畫了。接下來我們就做個傻瓜教程,把Visual Studio 2019(VS2017也可以)開發的Console App,publish並且在Ubuntu上執行。就其中遇到的問題以及解決方法和大家討論。

首先我們準備一下環境。Visual studio 2019和.NET Core SDK 2.2。其中Visual Studio可以去這個地址:

https://visualstudio.microsoft.com/downloads/

下載免費的Community版本。這個免費的Community版本絕對良心,除了條款寫了不能用作商業用途,跟賣幾千刀的版本比並不缺少任何核心功能。

.NET Core的下載地址:

https://dotnet.microsoft.com/download

Visual Studio 2019(2017)自帶的.NET Core版本是2.1,因為我們會嘗試2.2版本以後才支援的publish mode:Framework-dependent executable。所以還是推薦升級到最新版。

注意VS2017需要下載下圖這個相容性2.2版本。

 

準備就緒之後,開始建立第一個.NET Core的Console APP。說實話整個過程和.NET Framework沒有任何區別。

不修改任何一行程式碼,即可點選F5執行,會在控制檯中輸出Hello World。

然後讓我們試一下publish功能。如下圖在project檔案上右鍵選擇publish。

採用預設的配置,一路Next下去。會在Release資料夾下面生成一個publish資料夾,其中包含了我們Console APP的釋出用版本

開啟這個資料夾仔細一看,發現木的exe檔案,莫不是我眼花了??這特麼怎麼執行??剛開始把老紙尿都嚇出來了。後來發現這是因為.NET Core 2.x版本的預設釋出方式都是Framework-dependent deployment(具體3種釋出方式我們稍後討論)。意思就是需要通過dotnet CLI來執行程式,可以理解為需要通過cmd命令列視窗來啟動程式。而dotnet CLI可以通過安裝.NET Core Runtime來獲得(當然你裝完整的.NET Core SDK也可以)。

讓我們開啟cmd視窗,通過cd命令進入到publish的目錄。然後鍵入dotnet dotnetcorehelloworld.dll。我現在很後悔剛才起了這麼長一個名字,還好Windows下不區分大小寫。然後可以在控制檯視窗中看到hello world的輸出了。和通過F5 Debug是一樣的。

Windows下的準備工作已經完成了。接下來我們試著將這個Console APP在Ubuntu下執行。

首先請大家拿出Ubuntu的機器,什麼沒有??要不要來戴爾買一臺?

開個玩笑,我們窮逼雖然什麼都買不起,但是最懂生活,沒有Ubuntu我們可以5分鐘之內在Windows上裝一個。

此時此刻,我突然感覺某軟那個CEO有點意思,什麼“予力全球每一人、每一組織,成就不凡。”。讓我們來體驗下某軟怎麼幫我們學習Linux的。

開啟MS Store搜尋Ubuntu,第一個大圖點開閉著眼睛裝唄,安裝過程非常迅速。

安裝完成了先別急著點,要去控制皮膚的Windows Features裡勾選Windows Subsystem for Linux。

找不到的同學直接工作列搜尋或者問Cortana。

完成以上兩步之後,就可以點選開啟橘色的Ubuntu了,第一次開啟會有個短暫的配置過程,然後要求你輸入使用者名稱和密碼,和Windows的是獨立的。我們只是簡單學習使用,所以隨便起個好記的名字和密碼就可以了。

開啟Ubuntu的控制檯介面後,我們希望能訪問C盤,鍵入cd /mnt/c。然後再鍵入ls,就能看到C盤的檔案了,當然有一些在Linux環境下是訪問不了的。

為了簡單起見,我們切回Windows介面,將publish資料夾拷貝到C盤根目錄。然後只需要cd publish就可以找到我們的程式了。

非常遺憾我們還不能通過dotnet命令執行程式,因為我們根本就沒在Linux環境下安裝.NET Core的runtime啊!沒有圖形環境的話,只能敲命令列安裝了,參考下面的連結:

https://dotnet.microsoft.com/learn/dotnet/hello-world-tutorial/install

記得選Ubuntu 18.04,之後只管一通亂敲。不放心的話可以通過這個Linux命令確認Ubutu版本:lsb_release -a

完成這步安裝後,只要簡單的鍵入dotnet DotNetCoreHelloWorld.dll就可以執行程式了。注意Linux下區分大小寫。現在知道為什麼要把publish拷出來了吧,不然cd目錄累死人。

至此大功告成!感謝各位看到這裡,想必各位還有很多疑問,我們後面再接著討論。

這個Hello World工程我就不上傳Github了。各位自己實驗吧,如果懷疑Windows subsystem for Linux的真實性,那麼就來戴爾買個Ubuntu的機器^O^

相關文章