基本上,當你知道了一個程序員的首選操作系統(tǒng)是什么的同時,你就可以猜測出他們使用的是什么編程語言。例如,如果程序員使用的是Windows,那么他們可能使用的語言列表包括C#,JavaScript和TypeScript,如果是比較傳統(tǒng)的程序員,那可能使用Visual Basic,如果是緊跟時代潮流的程序員,那他可能就是在用F#;如果他們使用的是Linux,你也會得到一個開源項目列表:Go,Python,Ruby,Rails,Grails,Node.js,Haskell,Elixir等等,當然我們也不能忽略最近嶄露頭角的新語言——Kotlin。
但是,微軟的一個舉動就打破了這個局面,其制作NET框架,創(chuàng)建.NET Core,開放源代碼可以任何平臺上運行,例如Windows,Linux,MacOS,甚至還可以在手機操作系統(tǒng)—三星Tizen上運行。鑒于這種情況,Linux程序員應(yīng)該盡快熟悉.NET Core,并嘗試使用它來構(gòu)建生產(chǎn)應(yīng)用程序。
如何在Linux上安裝.NET Core
可以運行.NET Core的Linux發(fā)行版包括Red Hat EnterpriseLinux(RHEL),Ubuntu,Debian,F(xiàn)edora,CentOS,Oracle和SUSE。
每個發(fā)行版都有自己的安裝說明,本文以Fedora 26為例:
第1步:添加dotnet product feed。
sudo rpm --import https:// packages.microsoft.com / keys / microsoft.asc
sudo sh -c'echo -e“[packages-microsoft-com-prod] nname = packages-microsoft-com-prod nbaseurl = https://packages.microsoft.com/yumrepos/microsoft-rhel7.3-prod nenabled = 1 ngpgcheck = 1 ngpgkey = https://packages.microsoft.com/keys/microsoft.asc“> / etc /yum.repos.d/dotnetdev.repo”
第2步:安裝.NET Core SDK。
sudo dnf update
sudo dnf install libunwind libicu compat-openssl10
sudo dnf install dotnet-sdk-2.0.0
創(chuàng)建Hello World控制臺應(yīng)用程序
.NET Core安裝完之后,下一步就是創(chuàng)建 “Hello World”控制臺應(yīng)用程序。
輸出:
下面我們來分析一下,上面這段代碼做了哪些事情?
dotnew new console
毫無疑問,這個大家都知道它創(chuàng)造了“Hello World!”控制臺應(yīng)用,需要注意的是,項目名稱需要匹配目錄名稱; 代碼是使用模板(控制臺應(yīng)用程序)構(gòu)建;項目的依賴關(guān)系由從nuget.org提取的dotnet restore命令自動檢索。
如果查看目錄的話,你會看到有些文件被創(chuàng)建了:
Program.cs
helloworld.csproj
Program.cs是C#控制臺應(yīng)用程序代碼,Helloworld.csproj是MSBuild兼容的項目文件,當創(chuàng)建Web服務(wù)或網(wǎng)站時,項目文件將具有新的意義。
dotnet run
這個命令做了兩件事:建立代碼,并運行新建的代碼。無論何時調(diào)用dotnet run,它都會檢查* .csproj文件是否已被更改,并運行dotnet restore命令。同時它還會檢查是否有任何源代碼已被更改,并在后臺運行dotnet構(gòu)建命令構(gòu)建可執(zhí)行文件。最后,它會運行可執(zhí)行文件。
可執(zhí)行文件在哪?
以下是可執(zhí)行文件的路徑:
/opt/rh/rh-dotnet20/root/usr/bin/dotnet
當你創(chuàng)建一個.net應(yīng)用,一個組件或者庫的時候,你也正在創(chuàng)建一個DLL。如果你想查看dotnet build命令創(chuàng)建的內(nèi)容,可以看看bin / Debug / netcoreapp2.0 /,其中包括helloworld.dll,JSON配置文件,和helloworld.pdb(調(diào)試數(shù)據(jù)庫)文件,同時你也可以查看JSON文件。
運行dotnet run,運行的進程是dotnet。該進程會調(diào)用DLL文件,并成為應(yīng)用程序。
便攜式應(yīng)用程序
這個部分是.NET Core開始真正脫離僅限Windows的.NET Framework的地方:剛剛創(chuàng)建的DLL可以運行在安裝了.NET Core的任何系統(tǒng)上,無論是Linux,Windows還是MacOS。它是便攜式的,所以被稱為“便攜式應(yīng)用程序”。
獨立應(yīng)用程序
如果你想分發(fā)一個應(yīng)用程序,但是又不想讓用戶在他們的機器上安裝.NET Core,怎么辦?.NET Core有辦法:獨立應(yīng)用程序。
創(chuàng)建獨立應(yīng)用程序意味著你可以將應(yīng)用程序分發(fā)到任何系統(tǒng),并且可以無需安裝.NET Core運行。這意味著更快更簡單的安裝,同時也意味著你可以在同一個系統(tǒng)上有多個應(yīng)用程序運行不同版本的.NET Core。
需要改進的地方
當你使用dotnet publish命令創(chuàng)建獨立應(yīng)用程序時,DLL被放置到目標目錄連同所有的.NET位必須運行DLL。也就是說,你可以在目錄中看到50個文件。但是這個問題也將很快得到改變,已經(jīng)在實驗的.NET Native將很快被引入,并在.NET Core發(fā)布。它將構(gòu)建一個包含所有比特的可執(zhí)行文件,這就像Go語言編譯一樣,可以指定目標平臺并得到可執(zhí)行文件。
在64位處理器上為RHEL 7.x構(gòu)建發(fā)行版:
dotnet publish -c Release -r rhel.7-x64
Web服務(wù),網(wǎng)站…
.NET Core模板包含了更多內(nèi)容,包括對F#和Visual Basic的支持。要獲取內(nèi)置到.NET Core中的可用模板起始列表,可以使用命令dotnet new --help。
提示:.NET Core模板可以由第三方創(chuàng)建。
和大多數(shù)命令行工具一樣,使用--help命令可以隨時獲得上下文幫助。