.net8发布Linux 版本程序,部署到Linux服务器上

基础打包代码:

复制代码
# Windows 发布
dotnet publish -c Release -r win-x64 --self-contained true

# Linux 发布
dotnet publish -c Release -r linux-x64 --self-contained true

生成文件较多,生成完整的自包含包(含所有 .NET 运行时 DLL),最稳定、兼容性最高,但体积较大(通常 150--250MB)

优化版

复制代码
dotnet publish -c Release -r linux-x64 --self-contained true /p:PublishSingleFile=true /p:PublishTrimmed=true

打包为单文件,并自动移除未使用的库,文件体积小(40--80MB),部署最方便,但要稍微注意反射依赖问题

/p:PublishTrimmed=true 会启用 .NET 的"修剪器(Trimmer)",它会分析代码,删除未使用的类与方法。

但:

  • 如果你的程序使用 反射 (Reflection) 、动态加载 (Assembly.Load) 、JSON 序列化反射 等机制,修剪器可能会误删实际需要的类型;

  • 一般业务型应用(例如:OPC UA、MQTT、Modbus 项目)通常不会受到严重影响;

  • 但如果你发现发布后的程序运行时报 TypeLoadException、MissingMethodException 等,可能是修剪导致的。

综上,建议使用基础打包代码,这样最大程序避免错误。

混淆代码:ConfuserEx

反编译:NativeAOT

相关推荐
我是koten14 小时前
【运维杂谈】K8s遇到Terminating的名称空间删除不了怎么办?(解决方案亲测有效)
linux·运维·服务器·云原生·kubernetes·k8s·名称空间
2601_967987371 天前
安装 Redis 或 Redis Stack
linux·windows·redis·macos·安装
feng_you_ying_li1 天前
linux之数据链路层
linux·网络·智能路由器
GeW1 天前
高端化走到深处,是数据库和Linux的事
linux
程序员初一1 天前
Linux 远程桌面有四种做法
linux·ssh
程序开发阿元1 天前
1C1G 能跑什么:把留常驻服务和不留摆进一张内存表
linux·ssh
xbzb1 天前
自定义 yum 软件源:Linux 上 createrepo,Windows 上纯 Python 也能造
linux·运维·windows·python·yum·createrepo
Android系统攻城狮1 天前
Linux FFmpeg深度解析之avio_open调用流程与实战(三十八)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频
独隅1 天前
WebStorm Linux 版安装实战与核心效能展示
linux·ide·webstorm
雪落漂泊1 天前
Linux进程(五):进程地址空间篇
linux·运维·服务器