[ASP.NET Core 3框架揭祕] 跨平臺開發體驗: Mac OS
除了微軟自家的Windows平臺, .NET Core針對Mac OS以及各種Linux Distribution(RHEL、Ubuntu、Debian、Fedora、CentOS和SUSE等)都提供了很好的支援。我們先來體驗一下使用Mac來開發.NET Core應用,在這之前我們照例先得在Mac OS上構建我們的開發環境。
一、安裝開發環境
和Windows一樣,如果我們希望在Mac上進行.NET Core應用的開發,我們只需要安裝 .NET Core SDK和相應的IDE就可以了。 .NET Core SDK可以直接從微軟官方站點下載,安裝之後我們將擁有.NET Core針對Mac OS的執行時和相應工具,其中包含在前面頻繁使用的命令列工具 dotnet。順便說一下,雖然老版本的Mac OS(比如10.12 Sierra)可以安裝.NET Core 3.0 SDK,但是隻有在10.13 High Sierra或者更高版本的Mac OS才能編譯和執行.NET Core 3.0應用程式。
對於Mac OS X的.NET Core應用的開發人員來說,他們在IDE上同樣具有廣泛的選擇。首先,Visual Studio目前已經推出了Mac版本,雖然和Windows版本在功能和穩定性上還有一定的差距,但是對於習慣了Visual Studio的Mac使用者來說算是最好的選擇。除此之外,我們可以選擇免費的Visual Studio Code,如果不太喜歡這種風格的IDE,還可以選擇JetBrains的Rider。
二、利用命令列建立.NET Core程式
對於Windows和Mac使用者來說,針對他們的開發體驗基本上是一致的,因為.NET Core SDK提供的命令列(主要是dotnet這個命令列工具)在各個平臺具有一致性的定義,在IDE(Visual Studio和Visual Studio Code)層面也具有相同的選擇。我們先來體驗一下用於建立初始 .NET Core專案的腳手架命令列在Mac OS上的應用,為此我們按照下圖所示的方式執行“dotnet new console”命令在當前目錄下建立了一個控制檯應用程式。
上圖右側所示的是執行腳手架命令列建立的控制檯應用的專案結構,可以看出它與我們在Windows上執行相同命令建立的應用具有相同的檔案結構。不僅如此,生成的檔案內容也完全一致,如下所示的是專案檔案helloworld.csproj和程式檔案Program.cs的內容。
helloworld.csproj:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp3.0</TargetFramework> </PropertyGroup> </Project>
Program.cs:
using System; namespace helloworld { class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); } } }
在無需對原檔案做任何改動的情況下,我們可以直接執行dotnet命令列來啟動該控制檯程式。如下面的程式碼片段所示,在將當前目錄切換到控制檯應用所在專案根目錄之後,我們直接執行dotnet run命令啟動了我們建立的程式,隨後我們看到了作為程式入口的Main方法輸出到控制檯上的“Hello World!”文字。
三、ASP.NET Core MVC應用
在《跨平臺開發體驗: Windows[下篇]》中,我們演示瞭如何將一個通過腳手架命令列建立的控制檯應用一步步改造成ASP.NET Core MVC應用,既然.NET Core提供真正的跨平臺支援,那麼我們按照相同方式改造的ASP.NET Core MVC應用同樣可以在Mac OS上執行。接下來我們就來驗證一下。我們首先直接編輯專案檔案helloworld.csproj將SDK改成“Microsoft.NET.Sdk.Web”,並將表示輸出型別的屬性節點(<OutputType>Exe</OutputType>)移除。
<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>netcoreapp3.0</TargetFramework> </PropertyGroup> </Project>
我們選擇相應的IDE或者純文字編輯器對Program.cs進行如下的修改,那麼我們的應用就變成了一個簡單的ASP.NET Core MVC應用。經過前面的介紹,相信讀者朋友們已經理解了每一行程式碼的含義,所以在這裡我們就不再贅言說明了。
using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; namespace helloworld { class Program { static void Main() { Host.CreateDefaultBuilder() .ConfigureWebHostDefaults(webHostBuilder => webHostBuilder .ConfigureServices(servicecs => servicecs .AddRouting() .AddControllersWithViews()) .Configure(app => app .UseRouting() .UseEndpoints(endpoints => endpoints.MapControllers()))) .Build() .Run(); } } } public class HelloController { [HttpGet("/hello")] public string SayHello() => "Hello World!"; }
到目前為止,所有的程式設計工作都已經結束,我們只需要按照我們熟悉的方式執行dotnet run命令就可以啟動這個程式。程式啟動之後利用瀏覽器訪問地址“http://localhost:5000/hello/foobar”,我們會得到如下圖所示的輸出結果。
[ASP.NET Core 3框架揭祕] 跨平臺開發體驗: Windows [上篇]
[ASP.NET Core 3框架揭祕] 跨平臺開發體驗: Windows [中篇]
[ASP.NET Core 3框架揭祕] 跨平臺開發體驗: Windows [下篇]
[ASP.NET Core 3框架揭祕] 跨平臺開發體驗: Mac OS
[ASP.NET Core 3框架揭祕] 跨平臺開發體驗: Linux
[ASP.NET Core 3框架揭祕] 跨平臺開發體驗: Docker