.NET应用怎么在Linux上运行 .NET跨平台部署指南

来源:这里教程网 时间:2026-02-21 17:34:14 作者:

NET应用可以在Linux上直接运行,前提是使用.NET Core或.NET 5及更高版本(统称“.NET”),因为它们原生支持跨平台。.NET Framework不行,它仅限Windows。

确认应用基于支持跨平台的.NET版本

打开项目文件(.csproj),检查

<targetframework></targetframework>
节点:

netcoreapp3.1
net5.0
net6.0
net7.0
net8.0
等——可部署到Linux
net472
net48
等——属于.NET Framework,无法在Linux原生运行(除非用Mono,但不推荐用于新项目)

发布为独立部署(Self-contained)或框架依赖(Framework-dependent)

两种方式都可行,区别在于是否把.NET运行时一起打包:

框架依赖部署:体积小,但目标Linux服务器必须已安装对应版本的.NET运行时 独立部署:生成包含运行时的完整文件夹,无需提前装.NET,适合环境不可控或无管理员权限的场景

命令示例(发布为Linux x64独立应用):

dotnet publish -c Release -r linux-x64 --self-contained true -o ./publish

注意:

-r linux-x64
中的运行时标识符(RID)需匹配目标系统架构(如
linux-arm64
用于树莓派或AWS Graviton)。

在Linux上运行和托管

发布后进入

./publish
目录,直接执行:

控制台应用:
./YourApp
(确保有执行权限:
chmod +x YourApp
Web应用(如ASP.NET Core):
./YourWebApp
,默认监听
http://localhost:5000

生产环境建议用反向代理(如Nginx)+ 进程管理(如systemd):

Nginx转发请求,并处理HTTPS、静态文件、负载均衡等 用systemd写个服务单元文件(
/etc/systemd/system/myapp.service
),实现开机自启、崩溃重启、日志集成

注意Linux特有事项

常见坑点提前规避:

路径分隔符:用
Path.Combine()
代替硬编码
"/"
"\"
文件权限与大小写:Linux文件系统区分大小写,资源路径、配置文件名别写错 依赖本地库:若用到
System.Drawing
(旧版)、FFmpeg、SQLite等,需确认Linux下对应原生库已安装(如
libgdiplus
libsqlite3-dev
时区与区域设置:容器中可能默认是
C.UTF-8
,影响日期格式化或字符串比较,必要时在启动脚本中设
export TZ=Asia/Shanghai

基本上就这些。只要用对.NET版本、选好发布方式、适配好路径和依赖,Linux跑.NET和Windows一样稳。

相关推荐