除了微軟自家的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



