如何利用.NET Core搭建跨平台的控制台应用程序
盡管傳統(tǒng)意義上來說,.NET是只面向Windows的、閉源的專有平臺,然而,傳統(tǒng)觀念即將被顛覆。新的開源跨平臺的.NET Core已經(jīng)開啟,意味著你可以在任意平臺寫C#或.NET,然后在Windows、Linus和macOS運(yùn)行。
這個(gè)新的.NET平臺正在GitHub上嘗試對外開放,主要用到MIT和Apache的許可證,甚至還接收社區(qū)貢獻(xiàn)。新平臺的設(shè)計(jì)理念源自以往的開源編譯器Roslyn(.NET編譯器平臺),目的在于不局限于Windows或Visual Studio,而是允許開發(fā)者在任意集成開發(fā)環(huán)境(IDE)中使用任意系統(tǒng),然后在任意服務(wù)器或平臺運(yùn)行程序。
為了演示這個(gè)新平臺,我們搭建一個(gè)超級簡單的控制臺應(yīng)用程序,然后使用新的dotnet命令行接口(CLI)在Windows和Linux上運(yùn)行。開始之前,需要先安裝.NET Core(包含dotnet CLI工具)。微軟的在線文檔中為大多數(shù)平臺(包括各種各樣的發(fā)行版)提供完整的軟件文檔。
如果你不想在本地安裝.NET Core,微軟/dotnet:最新Docker圖片預(yù)置了所有最新的工具和SDK。
搭建新程序
.NET Core版本迭代很快,我寫的這些主要適用于當(dāng)時(shí)的最新版本。
首先,我們用dotnet的新控制臺搭建一個(gè)新的控制臺應(yīng)用程序,然后自動生成一個(gè)Program.cs和 .csproj,這是以當(dāng)前的目錄命名的(我的名為app.csproj)。
為了驗(yàn)證可行性,嘗試運(yùn)行一下dotnet restore,這個(gè)可以恢復(fù)運(yùn)行程序需要用到的所有包。這個(gè)步驟完成后,運(yùn)行dotnet run,然后你就可以在控制臺看到關(guān)鍵信息Hello,World!了。
添加邏輯功能
在你最喜歡的文本編輯器中打開Program.cs,然后用下面的內(nèi)容替換Console.WriteLine(“Hello World!”);,因?yàn)?NET與Visual Studio之間沒有耦合關(guān)系,所以你可以用任意你喜歡的IDE或文本編輯器,甚至可以用vi。
Console.WriteLine($"Hello {System.Environment.GetEnvironmentVariable("USER")}! I'm {System.Environment.MachineName} and I'm talking to you from {System.IO.Directory.GetCurrentDirectory()}");對于不熟悉C#和.NET的人來說,這段代碼實(shí)際上是在用當(dāng)前環(huán)境的信息打印一個(gè)更詳細(xì)版的經(jīng)典Hello, World。注意,這里的代碼并不是針對某一個(gè)指定的平臺。
運(yùn)行新程序
如果你現(xiàn)在運(yùn)行dotnet build,你會得到一個(gè).dll文件,還會有其他文件添加到你的./bin/Debug文件夾。你已經(jīng)寫了一段跨平臺的控制臺程序,將那些文件復(fù)制到另一臺運(yùn)行.NET Core的機(jī)器——Linux或者OS X也可以,然后運(yùn)行dotnet ./path/to/your/app.dll,你將看到和前面一樣的輸出,然而你用的仍然是本地運(yùn)行環(huán)境。幸運(yùn)的是,.NET Core可以在一個(gè)獨(dú)立包中搭建和發(fā)布本地二進(jìn)制文件,所以你的目標(biāo)系統(tǒng)(或用戶)不用安裝.NET也可以運(yùn)行程序。
嘗試其他平臺
要想嘗試跨平臺應(yīng)用程序,我們必須先確定用于搭建平臺的.NET Core SDK,由于這個(gè)過程涉及到本地庫,除了指明需要用到的平臺以外,還需要確定風(fēng)格和版本。
在應(yīng)用目錄中打開.csproj文件,將下列XML標(biāo)簽添加到各標(biāo)簽中:
<propertygroup><runtimeidentifiers>win10-x64;osx.10.12- x64;debian.8-x64</runtimeidentifiers></propertygroup>這樣,.NET就知道我們想要為Windows 10 64-bit、macOS Sierra和Debian 8搭建一個(gè)獨(dú)立的應(yīng)用程序,接下來要做的就是運(yùn)行之前選擇的環(huán)境下的dotnet publish,然后在每一個(gè)平臺上編譯本地二進(jìn)制文件。
注意一下,在./app/bin/Debug/netcoreapp1.1/文件夾中每一個(gè)平臺都有對應(yīng)的目錄,每一個(gè)目錄都有對應(yīng)的publish文件夾,這個(gè)文件夾里有你的本地應(yīng)用程序的副本,還有所有需要運(yùn)行的.NET庫的副本,所有沒必要在目標(biāo)系統(tǒng)上安裝.NET,只需要把這些文件復(fù)制到一個(gè)新的文件夾然后運(yùn)行可執(zhí)行文件就好了。
結(jié)語
使用C#和新的.NET Core平臺,你可以在任意平臺搭建應(yīng)用程序,再將它發(fā)布到任意平臺——100%代碼復(fù)用、完全本地、無運(yùn)行時(shí)、不用安裝框架。來GitHub吧,你可以看到新的框架讓這項(xiàng)技術(shù)更加強(qiáng)大!不管對于C#還是.NET,這都是非常激動人心的時(shí)刻!
原文地址:https://opensource.com/article/17/5/cross-platform-console-apps
.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關(guān)注
總結(jié)
以上是生活随笔為你收集整理的如何利用.NET Core搭建跨平台的控制台应用程序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DDD理论学习系列(9)-- 领域事件
- 下一篇: ASP.NET Core MVC 控制器