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