如果想體驗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