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

你可能感兴趣的文章
NodeJS、NPM安装配置步骤(windows版本)
查看>>
NodeJS、NPM安装配置步骤(windows版本)
查看>>
nodejs下的express安装
查看>>
nodejs与javascript中的aes加密
查看>>
nodejs中Express 路由统一设置缓存的小技巧
查看>>
nodejs中express的使用
查看>>
Nodejs中搭建一个静态Web服务器,通过读取文件获取响应类型
查看>>
Nodejs中的fs模块的使用
查看>>
NodeJS使用淘宝npm镜像站的各种姿势
查看>>
NodeJs入门知识
查看>>
nodejs包管理工具对比:npm、Yarn、cnpm、npx
查看>>
NodeJs单元测试之 API性能测试
查看>>
nodejs图片转换字节保存
查看>>
nodejs在Liunx上的部署生产方式-PM2
查看>>
nodejs基于art-template模板引擎生成
查看>>
nodejs字符与字节之间的转换
查看>>
NodeJs学习笔记001--npm换源
查看>>
NodeJs学习笔记002--npm常用命令详解
查看>>
nodejs学习笔记一——nodejs安装
查看>>
vue3+Element-plus icon图标无法显示的问题(已解决)
查看>>