Linux (Windows Linux子系统)

Linux (Windows Linux子系统)

如果想体验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

时间: 2024-12-20 01:15:53

Linux (Windows Linux子系统)的相关文章

Windows&Linux常用命令笔记

目录 linux windows Linux: Windows: 1.window下查看端口占用: //查询占用8088端口的进程的pid netstat -ano|findstr "8088" -->pid=6580//根据pid查询到进程对应的应用 tasklist|findstr "6580" -->xxx.exe//杀死应用,关闭进程 taskkill /f /t /im xxx.exe 原文地址:https://www.cnblogs.com/

Linux 内核无线子系统

Linux 内核无线子系统 浅谈 Linux 内核无线子系统 Table of Contents 1. 全局概览 2. 模块间接口 3. 数据路径与管理路径 4. 数据包是如何被发送? 5. 谈谈管理路径 6. 数据包又是如何被接收? 7. 总结一下 Linux 内核是如何实现无线网络接口呢?数据包是通过怎样的方式被发送和接收呢?刚开始工作接触 Linux 无线网络时,我曾迷失在浩瀚的基础代码中,寻找具有介绍性的材料来回答如上面提到的那些高层次的问题.跟踪探索了一段时间的源代码后,我写下了这篇总

Windows+Linux安装Python工具setuptools

Windows+Linux安装Python工具setuptools setuptools是 Python Enterprise Application Kit(PEAK)的一个副项目,它 是一组Python的 distutilsde工具的增强工具(适用于 Python 2.3.5 以上的版本,64 位平台则适用于 Python 2.4 以上的版本),可以让程序员更方便的创建和发布 Python 包,特别是那些对其它包具有依赖性的状况. 经常接触Python可能会注意到,当需要安装第三方pytho

COMSOL Multiphysics 4.4 Update 1 Multilanguage Windows.&.Linux.&.MacOSX 1CD

GH BLAEDE 风力机性能和载荷计算的集成化软件包 用户界面直观 提供综合模型 空气动力模型 控制系统应用 动力响应等 多种用途 ProgeCAD.2013.Professional.v13.0.16.21 1CD PROKON.v2.6.14 1CD  IBM.SPSS.Amos.v22 1CD IBM.SPSS.Data.Collection.v7.Win32 1CD IBM.SPSS.Data.Collection.v7.Win64 1CD IBM.SPSS.Statistics.v2

linux & windows porting

1. linux   int snprintf(char *restrict buf, size_t n, const char * restrict   format, ...); windows  int _snprintf( 2. 头文件都是string. h windows平台:函数:stricmp(char *str1, char *str2), strnicmp(char *str1, char *str2, size_t n).Linux平台: 函数:strcasecmp(char

Telnet部署与启动 windows&&linux

Telnet部署与启动 windows&&linux 一.win7下默认是禁用telnet服务的(按顺序执行即可) 重新启动Telnet方法如下: 1.如果你直接到控制面板的管理工具里的服务项里去找telnet的话,那是徒劳无功 的,因为默认根本就没有这一服务.当然,你可以通过如下方式搞定."控制面 板" 一〉"程序" 一〉"打开或关闭windows功能",在里面你可以看到许多服务项,选 择"telnet服务器"

Windows Linux HackMacintosh

我想把Windows Linux HackMacintosh三类系统融入到一台笔记本上的神经病应该不多. 我的电脑就一个SATA硬盘,BIOS还不是EFI的.一共同时安装了Windows 8.1.OpenSUSE 13.1.Kail 1.0.4(不常用).东皇黑苹果(因为当时从最新的10.9.3版本一直试下去都支持不了AMD,我的Acer是AMD核&AMD5640显卡,在交流群里都说不要折腾.而且电脑显卡被强制关机坏了两次,耗费400大洋). 我想以后就只装两个系统,Kail 和 Windows

Linux Windows对NTFS移动盘的写入

一块西数1G的移动盘(2.5寸),厂家格式化为NTFS格式的文件系统.    最先挂到Windows 7机器上,拷入50G的文件,主要为MKV封装的电影和对应的字幕文件.刚开始拷速度很快,大约70M/秒,但是很快就降到32M/秒左右.拷贝完成后立即拔下,移动盘烫手.    后来挂到Ubuntu(版本14.04)下,也拷贝50G的视频文件,一开始的速度就在30M/秒的样子,很稳定.拷完立即拔盘,移动盘不热,甚至都不温.    这两台机器配置有差异,Windows 7更高,并且差别很大.如果想比较速

Windows + linux 双系统修改启动顺序

使用Windows + linux 双系统的用户可以使用如下方法修改启动顺序 我用的是Fedora 一.简单命令操作 1. 首先找到Windows的菜单menuentry. # cat /boot/grub2/grub.cfg | grep Windows 输出: menuentry 'Windows 7 (loader) (on /dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-chain-58D8931