[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
[ASP.NET Core 3框架揭秘] 跨平台开发体验: Linux的更多相关文章
- [ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [上篇]
微软在千禧年推出 .NET战略,并在两年后推出第一个版本的.NET Framework和IDE(Visual Studio.NET 2002,后来改名为Visual Studio),如果你是一个资深的 ...
- [ASP.NET Core 3框架揭秘] 跨平台开发体验: Docker
对于一个 .NET Core开发人员,你可能没有使用过Docker,但是你不可能没有听说过Docker.Docker是Github上最受欢迎的开源项目之一,它号称要成为所有云应用的基石,并把互联网升级 ...
- [ASP.NET Core 3框架揭秘] 跨平台开发体验: Mac OS
除了微软自家的Windows平台, .NET Core针对Mac OS以及各种Linux Distribution(RHEL.Ubuntu.Debian.Fedora.CentOS和SUSE等)都提供 ...
- [ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [下篇]
由于ASP.NET Core框架在本质上就是由服务器和中间件构建的消息处理管道,所以在它上面构建的应用开发框架都是建立在某种类型的中间件上,整个ASP.NET Core MVC开发框架就是建立在用来实 ...
- [ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [中篇]
我们在<上篇>利用dotnet new命令创建了一个简单的控制台程序,接下来我们将它改造成一个ASP.NET Core应用.一个ASP.NET Core应用构建在ASP.NET Core框 ...
- [转][ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [下篇]
由于ASP.NET Core框架在本质上就是由服务器和中间件构建的消息处理管道,所以在它上面构建的应用开发框架都是建立在某种类型的中间件上,整个ASP.NET Core MVC开发框架就是建立在用来实 ...
- [转][ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [上篇]
微软在千禧年推出 .NET战略,并在两年后推出第一个版本的.NET Framework和IDE(Visual Studio.NET 2002,后来改名为Visual Studio),如果你是一个资深的 ...
- [转][ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [中篇]
我们在<上篇>利用dotnet new命令创建了一个简单的控制台程序,接下来我们将它改造成一个ASP.NET Core应用.一个ASP.NET Core应用构建在ASP.NET Core框 ...
- 《ASP.NET Core 3框架揭秘》读者群,欢迎加入
作为一个17年的.NET开发者,我对一件事特别不能理解:我们的计算机图书市场充斥着一系列介绍ASP.NET Web Forms.ASP.NET MVC.ASP.NET Web API的书籍,但是却找不 ...
随机推荐
- Promise.all()
Promise.all(iterable) 方法返回一个 Promise 实例,此实例在 iterable 参数内所有的 promise 都“完成(resolved)”或参数中不包含 promise ...
- Spring IOC初始化深度解析
1.前言 本文是基于JAVA配置方法对Spring IOC进行分析,掌握Spring IOC初始化流程对于我们更好的使用Spring.学习Spring还是很有帮助的,本文所使用的的Spring版本为5 ...
- CentOS 7 ETCD集群配置大全
目录 前言 环境准备 安装 静态集群 配置 node01 配置文件 node02 配置文件 node03 配置文件 启动测试 查看集群状态 生成TLS证书 etcd证书创建 安装cfssl工具集 生成 ...
- 4k图片爬取+中文乱码
4k图片爬取+中文乱码 此案例有三种乱码解决方法,推荐第一种 4k图片爬取其实和普通图片爬取的过程是没有本质区别的 import requests import os from lxml import ...
- MySQL主从扩展知识
6月29/7月2日任务 说明:这两天无新课,主要是扩充知识面注意:这两天的任务,需要回专贴.需要你们通过看这些东西总结成自己的心得. 不能照搬,必须要自己理解,能看多少就看多少,看不完也没有关系,但一 ...
- Chrome插件安装的3种方法,解决拖放不能安装的情况,并提供插件下载
本文摘录于Chrome插件网站 方法一:拖放安装 下载插件的crx文件后,打开Chrome的扩展页面(chrome://extensions/或按Chrome菜单图标>更多工具>扩展程序) ...
- Javascript实现百度API
百度地图JavaScript API是一套由JavaScript语言编写的应用程序接口,可帮助您在网站中构建功能丰富.交互性强的地图应用,支持PC端和移动端基于浏览器的地图应用开发,且支持HTML5特 ...
- 利用modelarts和物体检测方式识别验证码
近来有朋友让老山帮忙识别验证码.在github上查看了下,目前开源社区中主要流行以下几种验证码识别方式: tesseract-ocr模块: 这是HP实验室开发由Google 维护的开源 OCR引擎,内 ...
- Android Selector和Shape的用法
一.Shape的用法 :shape用于设定形状,可以在selector,layout等里面使用,有6个子标签,各属性如下: 填充:设置填充的颜色 间隔:设置四个方向上的间隔 大小:设置大小 圆角:同时 ...
- Python中 * 与 **, *args 与 **kwargs的用法
* 用于传递位置参数(positional argument) ** 用于传递关键字参数(keyword argument) 首先,先通过一个简单的例子来介绍 * 的用法: def add_funct ...