.NET Core多平臺開發體驗[3]: Linux (Windows Linux子系統)

来源:http://www.cnblogs.com/artech/archive/2017/09/05/asp-net-core-hello-world-03.html
-Advertisement-
Play Games

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

1-22

系統的開發者模式被啟用之後,我們需要通過“控制面板(Control Panel)”>“程式與功能(Programs and Features)”打開如下圖所示的“程式與功能”對話框,並選擇“啟用或關閉Windows功能(Turn Windows features on or off)”打開“Windows功能”對話框。當我們勾選“適用於Linux的Windows子系統(Windows Subsytem for Linux”)選項並重啟後,針對Linux的Windows子系統特性被正式啟用。

1-23

當針對Linux的Windows子系統特性其中之後,系統賦予了我們一個名為lxrun的命令來管理這個子系統,我們可以利用它來安裝、卸載和更新Linux系統。到目前為止,我們僅僅是開啟了Linux子系統這個Windows特性,並沒有一個具體的Linux Distribution被安裝,所以我們現在需要做的就是以如下圖所示的形式執行“lxrun /install”命令安裝一個具體的Linux Distribution,該命令目前為我們安裝的是Ubuntu。Linux子系統完成之後,我們只需要制定用戶名和密碼創建一個登錄賬號即可。

1-24

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

1-25

作為主系統的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被成功安裝。

1-26

三、利用命令行創建一個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命令,它也具有相同的目錄結構和文件內容。

1-27

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

1-28


.NET Core多平臺開發體驗

.NET Core多平臺開發體驗[1]: Windows
.NET Core多平臺開發體驗[2]: Mac OS X
.NET Core多平臺開發體驗[3]: Linux
.NET Core多平臺開發體驗[4]: Docker


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • (green) short pairwise alignment / detailed edit model; (yellow) database search / divergent homology detection; (red) whole genome alignment / alignm ...
  • 參數檢查 跨目錄執行腳本但維持腳本與"."的相對位置不變 彩色日誌輸出 使用臨時文件, 防止使用的文件與已知文件重名而被替換 輸出到標準輸出的同時寫入到文件 逐行處理文本文件,註意文本要set fileformat=unix確保格式正確 ...
  • 添加引用 創建表 創建列 創建行 賦值和取值 篩選行 刪除行 複製表 表排序 ...
  • 前段時間,用CefSharp.WinForms寫了一個可以播放flash以及一些展示頁面的小程式,涉及到跨域訪問之類的問題。CefSharp.WinForms版本49.0.1。 剛開始挺順利,做到播放flash的時候各種黑屏,無法播放。先是回退32那個版本 用NPAPI解決的但是貌似32那個版本在客 ...
  • 在《asp.net core認證與授權》中講解了固定和自定義角色授權系統許可權,其實我們還可以通過其他方式來授權,比如可以通過角色組,用戶名,生日等,但這些主要取決於ClaimTypes,其實我們也可以自定義鍵值來授權,這些統一叫策略授權,其中更強大的是,我們可以自定義授權Handler來達到靈活授權... ...
  • 在asp.net core中,微軟提供了基於認證(Authentication)和授權(Authorization)的方式,來實現許可權管理的,本篇博文,介紹基於固定角色的許可權管理和自定義角色許可權管理,本文內容,更適合傳統行業的BS應用,而非互聯網應用。 ...
  • 1 public bool IsRegistered() 2 { 3 string clsid = ConfigurationManager.AppSettings["clsid"]; 4 //參數檢查 5 Debug.Assert(!String.IsNullOrEmpty(clsid), "cl ...
  • 代碼中包含了檢測本地安裝盤符代碼 1 一,定義下載委托事件(用於實現前臺進度條更新和下載完成後事件的回調): 2 private delegate void Action(); 3 private string diverUrl = ConfigurationManager.AppSettings[ ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...