1. 程式人生 > >[ASP.NET Core 3框架揭祕] 跨平臺開發體驗: Linux

[ASP.NET Core 3框架揭祕] 跨平臺開發體驗: Linux

如果想體驗Linux環境下開發.NET Core應用,我們有多種選擇。一種就是在一臺物理機上安裝原生的Linux,我們可以根據自身的喜好選擇某種Linux Distribution,目前來說像RHEL、Ubuntu、Debian、Fedora、CentOS和SUSE這些主流的Distribution都是支援的。如果讀者朋友們覺得這種方式比較麻煩,我們也可以採用虛擬機器的形式安裝相應的Linux Distribution,比如我經常使用的都是安裝在VirtualBox上的Ubuntu。對於X64 Windows 10的使用者來說,我們有了第三種更為方便快捷的選擇,那就是使用Windows 10提供的Linux子系統(WSL:Windows Subsystem for Linux),目前最新版本為WSL 2。

一、啟用Linux子系統

WSL 2要求作業系統必須是“Windows 10 build 18917 ”或者更高的版本。在Windows 10上啟用WSL 2只需要將“Virtual Machine Platform” 和“Windows Subsystem for Linux”這兩個特性開啟就可以了。我們可以採用兩種方式來啟用這兩個特性,第一種在PowerShell中以如下的方式執行Enable-WindowsOptionalFeature命令(該命令需要以管理員身份執行)。

Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

我們也可以採用視覺化的方式來開啟這兩個特性。具體來說,我們可以通過“控制面板(Control Panel)”>“程式與功能(Programs and Features)”開啟如下圖所示的“程式與功能”對話方塊,並選擇“Turn Windows features on or off)”開啟“Windows Features”對話方塊。在勾選了“Virtual Machine Platform”和“Windows Subsytem for Linux”選項並確定並重啟機器之後,針對Linux的Windows子系統就被啟用了。

二、安裝Linux

在啟用WSL之後,我們可以根據需要安裝對應的Linux Distribution。最方便的方式就是直接在Microsoft Store中下載並安裝對應的Linux Distribution,比如Microsoft Store為我們提供瞭如下圖所示的免費版Ubuntu 18.04 LTS。

如果Microsoft Store不可用(比如我的作業系統就是沒有Microsoft Store的Windows 10 Enterprise LTSC版本),我們可以直接利用curl.exe or the Invoke-WebRequest以命令列的方式下載Linux安裝包。下面列出了幾種常用的Linux Distribution的下載地址。

  • Ubuntu 18.04: https://aka.ms/wsl-ubuntu-1804
  • Ubuntu 18.04 ARM: https://aka.ms/wsl-ubuntu-1804-arm
  • Ubuntu 16.04: https://aka.ms/wsl-ubuntu-1604
  • Debian GNU/Linux: https://aka.ms/wsl-debian-gnulinux
  • Kali Linux: https://aka.ms/wsl-kali-linux
  • OpenSUSE: https://aka.ms/wsl-opensuse-42
  • SLES: https://aka.ms/wsl-sles-12

當Linux被成功安裝之後,我們可以在CMD命令列中執行bash命令進入Linux Bash Shell。如下圖所示,我們在CMD命令列中執行bash命令之後會自動進入Linux Bash Shell。我們在Bash Shell中執行“lsb_release -a”命令輸出當前安裝的Linux Distribution的版本資訊。如果想恢復到CMD命令列模式,我們只需要執行exit命令退出Bash Shell即可。

作為主系統的Windows和Linux子系統可以共享網路系統和檔案系統。Windows下的檔案系統直接掛載到“/mnt”目錄下,所以Windows下的檔案或者目錄路徑加上“/mnt”字首就變成了基於Linux子系統下的路徑。如上圖所示,CMD命令列環境下的當前工作目錄為“c:\Users\jinnan”,當我們切換到Bash Shell後,當前工作目錄其實並沒有發生變化,只是路徑變成了“/mnt/c/Users/jinnan”而已。

三、安裝開發環境

如果我們想在Linux下執行.NET Core應用,我們也只需要安裝.NET Core SDK就可以了。針對不同的Linux Distribution,.NET Core SDK的安裝略有不同。對於主流的Linux發行版本(RHEL、Ubuntu、Debian、Fedora、CentOS和SUSE等), .NET Core官方站點上給出了安裝.NET Core SDK的詳細教程。對於我們安裝的Ubuntu 18.04 LTS,.NET Core 3.0 SDK可以執行如下的命令進行安裝。

~$ sudo apt-get update
~$ sudo apt-get install apt-transport-https
~$ sudo apt-get install dotnet-sdk-3.0

安裝完成之後,我們可以執行dotnet --info命令檢視當前.NET Core SDK的基本資訊,如果得到如下圖所示的輸出結果,那就證明.NET Core SDK 3.0被成功安裝。

四、建立一個ASP.NET Core應用

.NET Core SDK同樣為Linux提供了dotnet這個重要的命令列工具,這意味著我們同樣可以利用它提供的腳手架模板建立相應的.NET Core應用。這次我們直接建立一個空的ASP.NET Core 應用,為此我們在執行dotnet new命令的時候將模板名稱指定為“web”。如下圖所示,我們在執行dotnet new命令時的當前工作目錄為“/mnt/c/helloworld”,也就是主系統Windows下的“c:\helloworld”,我們列出了該目錄下的所有檔案和子目錄。

和在Windows和Mac OS X下利用腳手架命令建立的應用一樣,我們在Linux下同樣可以在無需對它們作任何更改的情況下直接執行它們,為此我們只需要在當前應用所在的目錄下執行dotnet run命令即可。如下圖所示,啟動後的ASP .NET Core應用預設會繫結在5000(HTTP)和5001(HTTPS)埠進行請求監聽,由於Linux是當前Windows的子系統而非虛擬機器,所以主子系統可以共享網路,因此我們利用瀏覽器請求地址“http://localhost:5000”可以訪問這個應用的主頁。

[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