都說.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能夠去這個地址:blog
https://visualstudio.microsoft.com/downloads/教程
下載免費的Community版本。這個免費的Community版本絕對良心,除了條款寫了不能用做商業用途,跟賣幾千刀的版本比並不缺乏任何核心功能。開發
.NET Core的下載地址:get
https://dotnet.microsoft.com/downloadcmd
Visual Studio 2019(2017)自帶的.NET Core版本是2.1,由於咱們會嘗試2.2版本之後才支持的publish mode:Framework-dependent executable。因此仍是推薦升級到最新版。it
注意VS2017須要下載下圖這個兼容性2.2版本。io
準備就緒以後,開始建立第一個.NET Core的Console APP。說實話整個過程和.NET Framework沒有任何區別。table
不修改任何一行代碼,便可點擊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^