10分钟学会在windows/Linux下设置ASP.Net Core开发环境并部署应用
创建和开发ASP.NET Core应用可以有二种方式:最简单的方式是通过Visual Studio 2017 来创建,其优点是简单方便,但需要安装最新版本Visual Studio 2017 preview 15.3 。另一种方式是使用Visual Studio Code来创建,Visual Studio Code 则是一款轻量级的编辑器 ,可在多种操作系统中运行,如果情况允许,笔者更建议使用Visual Studio Code来进行开发,可在多种平台开发,同时也更灵活,享受更多开发的乐趣。
- 1.1. 先决条件
- 1.2. 通过Visual Studio 2017 创建应用
- 1.3. 通过Visual Studio Code 创建应用
- 1.4. 托管ASP.NET Core 应用
- 1.5. 总结
1.1. 先决条件
1.1.1. 安装.NET Core 2.0
开发ASP.NET Core 2.0的应用,前提是需要安装.NET Core 2.0 正式版。
安装完成后,可在命令行(cmd)中键入命令查看安装信息:
dotnet --info
安装信息如下图,表示.NET Core 2.0 已经成功安装

1.1.2. 安装Visual Studio 2017
如果需要使用Visual Studio 2017 来开发,需要安装 Visual Studio 2017 Preview version 15.3,个人开发者可选择社区版,社区版的功能对于日常的开发已经足够,并且是免费。
下载地址 https://www.visualstudio.com/vs/preview/?dotnetid=639356346.1501080398
下载完成后可选择相应的工作负载来安装,如果只是运行ASP.NET Core应用则可以只安装响应部分,如下图所示:

1.1.3. 安装Visual Studio Code
Visual Studio Code 是一个轻量级的源代码编辑器,可以运行在Windows,MacOs,和Linux。通过安装扩展可用来开发诸如C++、C#、 Python、PHP、Go等语言。
下载地址(https://code.visualstudio.com/)[https://code.visualstudio.com/]
安装完成后,需要安装c#开发扩展如下图所示

1.2. 通过Visual Studio 2017 创建应用
通过Visual Studio 2017 创建应用非常简单,在新建项目时选择 ASP.NET Core webapplication即可

在确认选择后,还会弹出一个对话框,选择代码结构模板,此处任意选择Web Application(MVC),项目即可生成完毕。在Visual Studio 2017中点击运行,一个ASP.NET Core 网站即可运行。

1.3. 通过Visual Studio Code 创建应用
首先可在本地新建文件夹,然后打开Visual Studio Code ,选择打开刚才的文件夹

在主菜单中依次选择“查看” > “集成终端”。在集成终端中输入 dotnet new mvc 命令,文件夹中会生成 mvc 的模板

模板建立好后,可在集成终端中输入dotnet run 命令,mvc 站点即可运行。

要在Visual Studio Code 中调试程序,需要配置调试器,点击调试配置,选择.NET Core配置文件

此时会生成launch.json文件,文件中有三种launch方式,以web节点为例
{
"name": ".NET Core Launch (web)",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"program": "${workspaceRoot}/bin/Debug/<insert-target-framework-here>/<insert-project-name-here>.dll",
"args": [],
"cwd": "${workspaceRoot}",
"stopAtEntry": false,
"launchBrowser": {
"enabled": true,
"args": "${auto-detect-url}",
"windows": {
"command": "cmd.exe",
"args": "/C start ${auto-detect-url}"
},
"osx": {
"command": "open"
},
"linux": {
"command": "xdg-open"
}
}
}
将program节点中的路径改为自己程序集的路径即可,例如${workspaceRoot/bin/Debug/netcoreapp2.0/WebApplicationSample1.dll然后点击左侧调试图标,在左上角可选择启动调试,启动后会弹出,对话框提示找不到build命令,选择配置任务运行程序。

配置完成后会多一个task.json文件,此时再次开启调试,便可运行调试。


1.4. 托管ASP.NET Core 应用
托管 ASP.NET Core 应用有多种方式,即可在传统的windows平台,也可以部署在开源的Linux上,还可以通过docker容器来部署,本节将讲解多种方式部署 ASP.NET Core 应用
1.4.1. Windows平台托管ASP.NET Core应用
ASP.NET Core 应用需要一个Host , Host必须要实现IWebHost接口,接口包括Start方法。创建一个Host 需要使用WebHostBuilder,它会返回一个WebHost实例,用于处理请求。
在上一节所创建的ASP.NET Core应用中,可以看到Program.cs文件中的 'void Main'方法,此方法是整个应用的入口,在入口中调用了CreaDefaultbuilder来创建Host,代码如下:
public class Program
{
public static void Main(string[] args)
{
BuildWebHost(args).Run();
}
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.Build();
}
CreateDefaultBuilder创建了WebHostBuilder的实例来构建启动 server 的 host。host需要一个实现IServer接口的server。内建的Web server 包括 Kestrel 和 Httpsys,默认使用Kestrel.在命令行工具中执行dotnet run命令,此时即可启动整个应用。

在ASP.NET Core中可以用两种HTTP server,它们请求原理如图所示:


Kestrel 是跨平台的HTTP server 基于libuv(一个跨平台的异步I/O library)
Httpsys 是基于Windows内核驱动程序Http.Sys的HTTP server。Http.Sys是成熟的技术,可以防范多种攻击,并提供全功能Web服务器的鲁棒性,安全性和可扩展性。IIS本身作为HTTP侦听器运行在Http.Sys之上。
在windows平台上还可以使用Http.Sys作为Web Server
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseHttpSys()
.Build();
1.4.2. Linux平台下托管ASP.NET Core应用
由于ASP.NET Core的跨平台性,因此在Liunx环境下也可以使用,需要注意的是在Linux环境下是不能选择Http.Sys作为Web server,而只能选择Kestrel。本文选用 Ubuntu 16.04 系统,作为示例。
第一步:注册微软key为可信任
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
注:如果没有curl需要安装curl。命令 sudo apt-get install curl
第二步:将微软的安装地址设为可信任的列表
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-trusty-prod trusty main" > /etc/apt/sources.list.d/dotnetdev.list'
第三步:更新apt-get版本
sudo apt-get update
第四步:更新完成后即可安装最新.NET Core 2.0
sudo apt-get install dotnet-sdk-2.0.0
安装完成后使用如下命令查看.NET Core 版本信息
dotnet --info

使用命令生成项目模板
dotnet new mvc -o app
以上命令会在当目录下面创建一个app文档夹,首先我们要将根路径跳转到app文件夹下面
cd app
最后我们要将ASP.NET Core应用在Linux环境下托管起来,只需要运行下面一条命令
dotnet run

如果选择Http.Sys作为Linux下的服务器则会抛出异常

1.5. 总结
从本节可以看出,不管是在传统的Windows环境还是Linux环境,都能通过Visual Studio Code开发ASP.NET Core 应用程序,同样的在Windwos环境和Linux都可以使用ASP.NET Core自带的Web server来托管应用。
参考资料
【1】http://www.microsoft.com/net/core#linuxubuntu
10分钟学会在windows/Linux下设置ASP.Net Core开发环境并部署应用的更多相关文章
- windows/Linux下设置ASP.Net Core开发环境并部署应用
10分钟学会在windows/Linux下设置ASP.Net Core开发环境并部署应用 创建和开发ASP.NET Core应用可以有二种方式:最简单的方式是通过Visual Studio 2017 ...
- 在Ubuntu下搭建ASP.NET 5开发环境
在Ubuntu下搭建ASP.NET 5开发环境 0x00 写在前面的废话 年底这段时间实在太忙了,各种事情都凑在这个时候,没时间去学习自己感兴趣的东西,所以博客也好就没写了.最近工作上有个小功能要做成 ...
- Linux下搭建gtk+2.0开发环境
安装gtk2.0 sudo apt-get install libgtk2.0-dev 查看 2.x 版本 pkg-config --modversion gtk+-2.0 #有可能需要sudo ap ...
- windows下的asp.net core开发及docker下的发布
参照下面,搭建好开发环境.Docker及配置好Docker加速器 http://www.cnblogs.com/windchen/p/6257846.html 参照下面,将windows共享目录挂载到 ...
- Linux下使用VsCode进行Qt开发环境搭建
最近在Linux上搞Qt, vim环境还用不太习惯, QtCreator之前使用时莫名其妙崩溃然后丢失代码之后就被我彻底放弃了, 于是研究了一下用VsCode进行Qt开发. 首先是系统环境和下载安装包 ...
- HBase学习(十四)LINUX下用Eclipse构建HBase开发环境
Eclipse,HBase版本号眼下没有发现须要特别指定 1:从HBase集群中复制一份Hbase部署文件,放置在开发端某一文件夹下(如在/app/hadoop/hbase096文件夹下). 2:在e ...
- Linux下安装和配置java开发环境(jdk/eclipse/tomcat)
第一步 安装jdk 1.进入usr目录 cd /usr 2.在usr目录下建立java安装目录 mkdir java 3.将jdk-6u24-linux-i586.bin拷贝到java目录下 cp j ...
- Windows系统下Eclipse上搭建Python开发环境
参考网站: https://blog.csdn.net/zhangphil/article/details/78962159 1.先安装JDK 和python,参考网站:https://www.c ...
- Linux下搭建gtk+2.0开发环境
1.执行如下命令,检查系统是否已安装gtk+ pkg-config --list-all |grep gtk 若命令提示如下,则系统已安装gtk+,否则未安装. 2.若未安装,则执行如下命令进行安装 ...
随机推荐
- centos7安装图形化界面
yum groups install -y "GNOME Desktop" "Graphical Administration Tools"
- Chrome浏览器扩展开发系列之七:override页面
Chrome浏览器通常提供了一些默认页面,如标签管理器页面chrome://bookmarks.浏览历史记录页面chrome://history或新建Tab页面chrome://newtab等. Ch ...
- Java 数据库编程 ResultSet 的 使用方法
结果集(ResultSet)是数据中查询结果返回的一种对象,可以说结果集是一个存储查询结果的对象,但是结果集并不仅仅具有存储的功能,他同时还具有操纵数据的功能,可能完成对数据的更新等. 结果集读取数据 ...
- c#编程-线程同步
线程同步 上一篇介绍了如何开启线程,线程间相互传递参数,及线程中本地变量和全局共享变量区别. 本篇主要说明线程同步. 如果有多个线程同时访问共享数据的时候,就必须要用线程同步,防止共享数据被破坏.如果 ...
- java在控制台输出空心正方形,菱形,空心菱形
使用for和if打印一个空心正方形 /*思路:要想打印一个5x5的空心正方形,首先它的第一横行和最后一行都是填满的,需要全部遍历出来,第二三四行和只有左右两条边是出来的,中间部分为空的.因此在打印第 ...
- maven依赖jar包更新,业务jar需同步更新(业务jar依赖API)
背景: 环境出现问题,定位为依赖jar缺失,修改工程pom文件补充依赖jar. 更新要点说明: 依赖jar,更新提交 业务jar,也需更新提交:maven构建会把依赖jar引用进去,更新环境如果单独更 ...
- xshell常用命令
常用的命令: suse linux 常用命令 (1) 命令ls--列出文件 ls 显示当前目录文件 ls -la 给出当前目录下所有文件的一个长列表,包括以句点开头的"隐藏"文件 ...
- (转) Eclipse Maven 编译错误 Dynamic Web Module 3.1 requires Java 1.7 or newer 解决方案
场景:在导入Maven项目时候遇到如下错误. 1 问题描述及解决 Eclipse Maven 开发一个 jee 项目时,编译时遇到以下错误:Description Resource Path Loca ...
- (转)Maven使用
MAVEN3--(一)关于MAVEN 博客分类: MAVEN3 1.简介 MAVEN是Apache开源组织中的一个跨平台的项目管理工具. 主要功能有项目构建.依赖管理以及项目信息管理. 2.项目构 ...
- 第一回:Scrapy的试水
前言:今天算是见到Scrapy的第二天,之前只是偶尔查了查,对于这个框架的各种解释,我-----都-----看------不------懂----,没办法,见面就是刚. 目的:如题,试水 目标:< ...