博客
关于我
.NET跨平台之旅:在Linux上以本地机器码(native)运行ASP.NET Core站点
阅读量:414 次
发布时间:2019-03-06

本文共 1685 字,大约阅读时间需要 5 分钟。

在将“.NET跨平台之旅”示例站点 从 ASP.NET 5 RC1 升级至 ASP.NET Core 1.0 ()之后,我们有一个难以抗拒的冲动 —— 体验一下 dotnet cli 引入的一个最激动人心的特性 —— 将 .NET 程序编译为本地(native)机器码。对应于我们的示例站点,就是将 ASP.NET Core 应用程序编译为本地机器码。

如何编译呢?非常简单,只需运行下面的命令:

dotnet build --native

编译输出如下:

Project AboutUs (.NETStandardApp,Version=v1.3) will be compiled because some of its inputs were newer than its oldest output.Compiling AboutUs for .NETStandardApp,Version=v1.3Compilation succeeded.    0 Warning(s)    0 Error(s)Time elapsed 00:00:02.7095915Input Assembly: /data/AboutUs/bin/Debug/netstandardapp1.3/AboutUs.dll

然后看一下 bin/Debug/netstandardapp1.3/ 文件夹中的内容:

ubuntu.14.04-x64 文件夹中的内容就是 native build 的输出,AboutUs 是可执行文件。

接下来,激动人心的时刻就要到了 —— 我们将以 AboutUs 这个编译为本地机器码的可执行文件运行 ASP.NET Core 站点。

在运行之前,需要做2个小小的准备工作:

1)为了与示例站点源代码所在的项目文件夹划清界线,我们新建了一个 about.cnblogs.com 文件夹,并将 ubuntu.14.04-x64 文件夹中的所有文件复制到这个文件夹。

2)将 config.json 文件复制到 about.cnblogs.com 文件夹中,示例站点有数据库操作(数据库用的是SQL Server),config.json 中存放着数据库连接字符串。

做好准备工作,演出就开始了!我们在 about.cnblogs.com 文件夹中运行下面的命令:

./AboutUs

控制台输出如下:

dbug: Microsoft.AspNetCore.Hosting.Internal.WebHost[3]      Hosting startingdbug: Microsoft.AspNetCore.Hosting.Internal.WebHost[4]      Hosting startedHosting environment: ProductionApplication base path: /data/websites/about.cnblogs.comNow listening on: http://*:8001Application started. Press Ctrl+C to shut down.

太帅了!站点成功运行起来了!

浏览器访问站点,一切正常。你现在看到的   就是在 Linux Ubuntu 服务器上以 native 方式运行的。 

以前只能在做梦时才敢想想的事情,现在正在逐渐成为现实。

注:我们在用 dotnet build --native 命令编译时,有时 ubuntu.14.04-x64 文件夹中无输出,可以改用 

dotnet build --native --no-incremental 命令解决这个问题。

【更新】

后来出现502错误与.NET Core没有关系,是因为没有以后台服务的方式运行命令,ssh会话一断开,进程就结束了。现已改为用下面的命令运行:

screen -d -m -s "AboutUs" /data/websites/about.cnblogs.com/AboutUs

转载地址:http://saekz.baihongyu.com/

你可能感兴趣的文章
Netty工作笔记0018---Selector介绍和原理
查看>>
Netty工作笔记0019---Selector API介绍
查看>>
Netty工作笔记0020---Selectionkey在NIO体系
查看>>
Netty工作笔记0021---NIO编写,快速入门---编写服务器
查看>>
Netty工作笔记0022---NIO快速入门--编写客户端
查看>>
Vue踩坑笔记 - 关于vue静态资源引入的问题
查看>>
Netty工作笔记0024---SelectionKey API
查看>>
Netty工作笔记0025---SocketChannel API
查看>>
Netty工作笔记0026---NIO 网络编程应用--群聊系统1---编写服务器1
查看>>
Netty工作笔记0027---NIO 网络编程应用--群聊系统2--服务器编写2
查看>>
Netty工作笔记0028---NIO 网络编程应用--群聊系统3--客户端编写1
查看>>
Netty工作笔记0029---NIO 网络编程应用--群聊系统4--客户端编写2
查看>>
Netty工作笔记0030---NIO与零拷贝原理剖析
查看>>
Netty工作笔记0031---NIO零拷贝应用案例
查看>>
Netty工作笔记0032---零拷贝AIO内容梳理
查看>>
Netty工作笔记0033---Netty概述
查看>>
Netty工作笔记0034---Netty架构设计--线程模型
查看>>
Netty工作笔记0035---Reactor模式图剖析
查看>>
Netty工作笔记0036---单Reactor单线程模式
查看>>
Netty工作笔记0037---主从Reactor多线程
查看>>