博客
关于我
.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/

你可能感兴趣的文章
Navicat 设置时间默认值(当前最新时间)
查看>>
navicat 连接远程mysql
查看>>
navicat:2013-Lost connection to MySQL server at ‘reading initial communication packet解决方法
查看>>
Navicate for mysql 数据库设计-数据库分析
查看>>
Navicat下载和破解以及使用
查看>>
Navicat中怎样将SQLServer的表复制到MySql中
查看>>
navicat创建连接 2002-can‘t connect to server on localhost(10061)且mysql服务已启动问题
查看>>
Navicat可视化界面导入SQL文件生成数据库表
查看>>
Navicat向sqlserver中插入数据时提示:当 IDENTITY_INSERT 设置为 OFF 时,不能向表中的标识列插入显式值
查看>>
Navicat因导入的sql文件中时间数据类型有参数而报错的原因(例:datetime(3))
查看>>
Navicat如何连接MySQL
查看>>
navicat导入.sql文件出错2006- MySQLserver has gone away
查看>>
Navicat导入海量Excel数据到数据库(简易介绍)
查看>>
Navicat工具Oracle数据库复制 or 备用、恢复功能(评论都在谈论需要教)
查看>>
Navicat工具中建立数据库索引
查看>>
navicat工具查看MySQL数据库_表占用容量_占用空间是多少MB---Linux工作笔记048
查看>>
navicat怎么导出和导入数据表
查看>>
Navicat怎样同步两个数据库中的表
查看>>
Navicat怎样筛选数据
查看>>
Navicat报错connection is being used
查看>>