直接安装SDK而非仅Runtime,除非明确只需运行已编译程序;需根据系统类型(CentOS 7/8、Ubuntu 18.04+等)匹配包管理器与Microsoft官方源,LTS版本(如.NET 6/8)适用于生产环境。

直接装 SDK 就行,别只装 runtime,除非你明确只跑别人编译好的程序。CentOS 7/8、Ubuntu 18.04+、Debian 10+ 都支持主流 .NET 版本(如 .NET 6、.NET 8),但版本匹配必须查清楚,否则 dotnet --list-sdks 会返回空。
确认系统类型和包管理器再动手
不同发行版用的包管理器不同,硬套命令会失败。先运行:
cat /etc/os-release
看 ID 和 VERSION_ID 字段,再决定走哪条路:
- CentOS 7 → 用
yum,必须先配置 Microsoft 官方 repo(packages-microsoft-prod.rpm) - CentOS 8+ / RHEL 8+ → 用
dnf,repo 地址和 CentOS 7 不同,不能复用 - Ubuntu 20.04+ / Debian 11+ → 用
apt,要先加 key 和源,dpkg -i装packages-microsoft-prod.deb是必要前置步骤 - Alpine → 不走包管理器,得用
apk add dotnet-sdk或手动解压二进制,apk源必须启用community仓库
漏掉 repo 配置,apt install dotnet-sdk-8.0 或 yum install dotnet-sdk-6.0 会报 “No package available”。
装哪个版本?LTS 还是最新版?
生产环境无脑选 LTS(如 .NET 6、.NET 8),它们有三年官方支持;.NET 9(2025 年 11 月发布)现在还没到 LTS,别在生产机上试。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
开发机可以装多个版本共存,但要注意:
-
dotnet --list-sdks显示的是当前 shell 环境能识别的 SDK,不是全局注册表 - 如果装了
dotnet-sdk-6.0和dotnet-sdk-8.0,新建项目默认用 8.0,但老项目global.json锁了"version": "6.0.400"就不会升 - 卸载旧版不要用
rm -rf /usr/share/dotnet,会破坏包管理器状态;该用apt remove dotnet-sdk-3.1或yum remove dotnet-runtime-3.1
装完验证不通过?重点查这三处
运行 dotnet --info 报错或卡住,常见原因不是安装失败,而是依赖缺失:
-
libicu:Ubuntu/Debian 上叫libicu72(对应 ICU 72.x),CentOS 7 是libicu50,版本错一位就dotnet启动失败,错误信息里常带libicu字样 -
tzdata:某些最小化安装的 CentOS/Alpine 没预装时区数据,dotnet new web会卡在初始化,ls /usr/share/zoneinfo为空就得yum install tzdata - SELinux:CentOS 默认开启,如果用非标准路径(如
/home/deploy/app)跑dotnet app.dll,可能被拦截,ausearch -m avc -ts recent能看到拒绝日志,临时关 SELinux 用setenforce 0
没 root 权限怎么办?用二进制免安装方式
公司服务器锁死 sudo 权限时,可以跳过包管理器:
- 去 dotnet.microsoft.com/download 下对应
linux-x64的tar.gzSDK 包(比如dotnet-sdk-8.0.400-linux-x64.tar.gz) - 解压到用户目录:
mkdir -p ~/dotnet && tar -xvzf dotnet-sdk-8.0.400-linux-x64.tar.gz -C ~/dotnet - 把
~/dotnet加进$PATH(写进~/.bashrc或~/.zshrc)
注意:这种方式不会自动装系统级依赖(如 libicu),得让运维提前配好,或者自己用 ldd ~/dotnet/dotnet 检查缺失的 so 文件。
最易忽略的是:dotnet 命令本身不检查 libicu 是否可用,直到你执行 dotnet build 或 dotnet run 才报错 —— 所以验证环节一定要跑真实命令,不能只看 --version。

















