.NET跨平台之旅:在Linux上以本地机器码(native)运行ASP.NET Core站点
在将“.NET跨平台之旅”示例站点 about.cnblogs.com 从 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.3 Compilation succeeded. 0 Warning(s) 0 Error(s) Time elapsed 00:00:02.7095915 Input 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 starting dbug: Microsoft.AspNetCore.Hosting.Internal.WebHost[4] Hosting started Hosting environment: Production Application base path: /data/websites/about.cnblogs.com Now listening on: http://*:8001 Application started. Press Ctrl+C to shut down.
太帅了!站点成功运行起来了!
浏览器访问站点,一切正常。你现在看到的 about.cnblogs.com 就是在 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
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 2分钟学会 DeepSeek API,竟然比官方更好用!
· .NET 使用 DeepSeek R1 开发智能 AI 客户端
· DeepSeek本地性能调优
· autohue.js:让你的图片和背景融为一体,绝了!
· 10亿数据,如何做迁移?
2013-03-12 云计算之路-入阿里云后:解决images.cnblogs.com响应速度慢的诡异问题
2012-03-12 上周热点回顾(3.5-3.11)
2011-03-12 【公告】服务器成功迁移至新机房
2009-03-12 msn爬虫频繁来访