Avalonia 应用可在 ARM 设备(如树莓派、Jetson)直接运行,需确保安装匹配的 .NET 8 ARM64 运行时,构建时指定 linux-arm64,发布命令为 dotnet publish -r linux-arm64 -c Release --self-contained false,部署时安装 GTK 等依赖并赋执行权限即可。

Avalonia 本身是跨平台的,原生支持 ARM 架构(包括 ARM64 和 ARM32),只要目标系统有对应 .NET 运行时,就能直接运行。关键不在 Avalonia 框架本身,而在于 .NET SDK/运行时支持 和 打包部署方式 是否适配 ARM 环境。
确认目标 ARM 系统支持的 .NET 版本
Ubuntu on ARM(如树莓派 4/5、RK3588 板、NVIDIA Jetson)通常使用 ARM64(aarch64) 架构。需确保:
- 目标设备已安装 .NET 6.0 或更高版本的 ARM64 运行时(推荐 .NET 8 LTS)
- 开发机(Windows/macOS)用的是同版本 SDK,避免框架不兼容
- 检查命令:
dotnet --list-runtimes(在 ARM 设备上运行)应看到类似Microsoft.NETCore.App 8.0.x [/usr/share/dotnet/shared/Microsoft.NETCore.App]
构建适用于 ARM 的 Avalonia 应用
不要依赖默认的“任意 CPU”构建——必须显式指定运行时标识符(RID):
- 在项目文件(
.csproj)中添加:(Ubuntu/Debian ARM64)linux-arm64
或linux-arm(仅限旧版 ARM32,已较少使用) - 命令行发布(推荐):
dotnet publish -r linux-arm64 -c Release --self-contained false
若要免安装 .NET 运行时,改用--self-contained true(体积大但便携) - 发布后输出目录(如
bin/Release/net8.0/linux-arm64/publish/)里的可执行文件,就是能在 ARM 设备上直接运行的程序
在 Ubuntu ARM 设备上部署和运行
以树莓派 5(Ubuntu 24.04 Server ARM64)为例:
- 将
publish文件夹整体复制到设备(如用scp或共享文件夹) - 赋予执行权限:
chmod +x YourApp - 安装必要依赖(Ubuntu):
sudo apt update && sudo apt install libgtk-3-0 libayatana-appindicator3-1 libnotify4 libglib2.0-0 - 首次运行可能提示缺少字体,可装默认字体:
sudo apt install fonts-dejavu-core - 运行:
./YourApp(注意:不是dotnet YourApp.dll,除非你没 self-contained)
打包成 deb 安装包(可选,适合批量分发)
deb 包能自动处理依赖和桌面集成(图标、启动器):
- 使用
dotnet-docker或cpack工具较重,推荐轻量方案:
手动创建DEBIAN/control,把 publish 内容放进/opt/yourapp,加 desktop 文件到/usr/share/applications/ - 更简单:用社区工具 dotnetCampus.DeployTool 或自定义脚本生成 deb
- 验证 deb:
dpkg-deb --info yourapp_1.0_arm64.deb,安装:sudo dpkg -i yourapp_1.0_arm64.deb
基本上就这些。不需要改代码,也不用重写 UI,Avalonia 的 XAML 和 MVVM 在 ARM 上完全一致。重点就是选对 RID、装对运行时、补全 GTK 依赖——跑起来比想象中快。










