如果想體驗Linux環境下開發和運行.NET Core應用,我們有多種選擇。一種就是在一臺物理機上安裝原生的Linux,我們可以根據自身的喜好選擇某種Linux Distribution,目前來說像RHEL、Ubuntu、Debian、Fedora、CentOS和SUSE這些主流的Distribut... ...
如果想體驗Linux環境下開發和運行.NET Core應用,我們有多種選擇。一種就是在一臺物理機上安裝原生的Linux,我們可以根據自身的喜好選擇某種Linux Distribution,目前來說像RHEL、Ubuntu、Debian、Fedora、CentOS和SUSE這些主流的Distribution都是支持的。如果讀者朋友們覺得這種方式比較麻煩,我們也可以採用虛擬機的形式安裝相應的Linux Distribution,比如我經常使用的都是安裝在VirtualBox上的Ubuntu。對於64為Windows 10的用戶來說,我們有了第三種選擇,那就是Windows 10提供的Linux子系統(WSL: Windows Subsystem for Linux),接下來我們就來演示在WSL上運行.NET Core應用。
一、啟用Linux子系統
接下來我們來簡單介紹一下如何啟用Linux子系統。首選需要提醒讀者朋友們的是:只有64位的Windows 10周年紀念版本才提供對Linux子系統的支持,如果你的Windows 10版本比較老,你需要將它升級到較新的版本。在這之後,我們需要開啟系統的開發者模式(Developer Mode),對此我們只需要選擇“設置(Settings)”>“更新與安全(Update and Security)”打開如下這個對話框。我們只需在左側選擇“針對開發人員(For developers)”,併在右側提供的三個選項中選擇“開發者模式(Developer Model)”。
系統的開發者模式被啟用之後,我們需要通過“控制面板(Control Panel)”>“程式與功能(Programs and Features)”打開如下圖所示的“程式與功能”對話框,並選擇“啟用或關閉Windows功能(Turn Windows features on or off)”打開“Windows功能”對話框。當我們勾選“適用於Linux的Windows子系統(Windows Subsytem for Linux”)選項並重啟後,針對Linux的Windows子系統特性被正式啟用。
當針對Linux的Windows子系統特性其中之後,系統賦予了我們一個名為lxrun的命令來管理這個子系統,我們可以利用它來安裝、卸載和更新Linux系統。到目前為止,我們僅僅是開啟了Linux子系統這個Windows特性,並沒有一個具體的Linux Distribution被安裝,所以我們現在需要做的就是以如下圖所示的形式執行“lxrun /install”命令安裝一個具體的Linux Distribution,該命令目前為我們安裝的是Ubuntu。Linux子系統完成之後,我們只需要制定用戶名和密碼創建一個登錄賬號即可。
當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子系統下的路徑。如圖1-25所示,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的詳細教程,在這裡我們針對WSL的版本(Ubuntu 16.04.2 )簡單介紹一下如何安裝對應的SDK。
對於Ubuntu下安裝.NET Core SDK,我們只需要執行apt-get安裝對應的deb包就可以了,不過在這之前我們需要確保該包所在Feed的URL在本地被註冊。至於該Feed URL的註冊,則主要涉及到兩個步驟,第一個步驟是註冊用於檢驗deb包完整性的簽名密鑰(Signature Key)文件,該密鑰編碼後的內容(ASCII Armor)可以直接從地址“https://packages.microsoft.com/keys/microsoft.asc”下載。為了在本地註冊該密鑰文件,我們執行如下的命令下載該文件並執行“gpg --dearmor”將文本內容轉換成二進位保存在文件“microsoft.gpg”,最終將後者保存到受信任密鑰目錄“/etc/apt/trusted.gpg.d”下。
~$ curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg ~$ sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
完成針對簽名密鑰文件的註冊之後,我們可以執行如下命令將在表示deb包源的“/etc/apt/sources.list.d”目錄下創建一個dotnetdev.list文件,.NET Core SDK所在deb包對應的Feed URL(https://packages.microsoft.com/repos/microsoft-ubuntu-xenial-prod)就包含在這個文件中。在這之後微軟通過該Feed提供的所有的deb包都可以直接通過apt-get命令安裝。
~$ sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-xenial-prod xenial main" > /etc/apt/sources.list.d/dotnetdev.list'
當所在deb包的Feed被成功註冊並通過執行apt-get update命令作相應同步操作之後,我們就可以按照如下的方式執行apt-get install命令安裝.NET Core SDK了。值得一提的時候,如果你在本地曾經安裝過之前的版本,你最好先將它們卸載。
~$ sudo apt-get update
~$ sudo apt-get install dotnet-sdk-2.0.0
安裝完成之後,我們可以執行dotnet –info命令查看當前.NET Core SDK的基本信息,如果得到如下圖所示的輸出結果,那就證明.NET Core SDK被成功安裝。
三、利用命令行創建一個ASP.NET Core MVC應用
.NET Core SDK同樣為Linux提供了dotnet這個重要的命令行工具,意味著這我們同樣可以利用它提供的腳手架模板創建相應的.NET Core應用。這次我們直接創建一個ASP.NET Core MVC,為此我們在執行dotnet new命令得時候將模板名稱指定為“mvc”。如下圖所示,我們在執行dotnet new命令時的當前工作目錄為“/mnt/c/”,也就是主系統Windows下的“c:\”,所以創建出來的ASP .NET Core MVC應用所在的根目錄為“c:\helloworld”,我們列了該目錄下的所有文件和子目錄。如果我們在Windows下執行相同的命令創建一個ASP.NET Core MVC命令,它也具有相同的目錄結構和文件內容。
和在Windows和Mac OS X下利用腳手架命令創建的應用一樣,我們在Linux下同樣可以在無需對它們作任何更改的情況下直接運行它們,為此我們只需要在當前應用所在的目錄下執行dotnet run命令即可。如下圖所示,啟動後的ASP .NET Core MVC應用預設會綁定在5000埠進行請求監聽,由於Linux是當前Windows的子系統而非虛擬機,所以主子系統可以共用網路,因此我們利用瀏覽器請求地址“http://localhost:5000”可以訪問這個應用的主頁。
.NET Core多平臺開發體驗
.NET Core多平臺開發體驗[1]: Windows
.NET Core多平臺開發體驗[2]: Mac OS X
.NET Core多平臺開發體驗[3]: Linux
.NET Core多平臺開發體驗[4]: Docker