0

0

Avalonia怎么在Linux上运行 Avalonia部署到Linux步骤

星降

星降

发布时间:2026-01-25 00:45:06

|

665人浏览过

|

来源于php中文网

原创

在Linux运行Avalonia程序需四步:一、安装.NET SDK(如8.0)及图形库(libx11-xcb1等);二、发布为独立部署+linux-x64;三、chmod +x赋权,并在图形环境下运行,必要时启用软件渲染;四、可选打包.deb安装包。

avalonia怎么在linux上运行 avalonia部署到linux步骤

直接在 Linux 上运行 Avalonia 程序,核心就两点:环境要装对、发布方式要选对。不是简单把 Windows 编译出的 exe 拷过去就能跑——Linux 没有 .NET 运行时或没配好渲染后端,程序会直接闪退或报“libSkiaSharp not found”“Failed to initialize graphics backend”这类错误。

一、Linux 系统先装好 .NET SDK 和基础依赖

不装 SDK,dotnet run 都执行不了;不装图形库,Avalonia 启不来窗口。

  • 安装 .NET SDK(推荐 7.0 或 8.0):按微软官方源添加,比如 Ubuntu/Debian 系列执行
wget https://packages.microsoft.com/config/ubuntu/22.04/prod.list -O /etc/apt/sources.list.d/microsoft-prod.list
apt-get update && apt-get install -y dotnet-sdk-8.0
  • 必须装图形支持库(尤其 headless 或最小化系统):
apt-get install -y libx11-xcb1 libxcb-glx0 libxcb-cursor0 libxcb-xkb1 libxkbcommon-x11-0 libgl1 libglib2.0-0
  • 可选但建议:装上 libskia-dev 或确认 SkiaSharp 运行时可用(避免手动编译)

二、项目发布选“独立部署 + linux-x64”

别用“依赖框架”的方式发布——那还得在目标机装 .NET,也不跨机器通用。独立部署才真正“拷过去就能跑”。

  • 在 VS 或 CLI 中发布时,目标运行时必须设为 linux-x64(不是 win-x64 或 portable)
  • 部署模式选 独立(Self-contained)
  • 保存设置后点击发布,输出文件夹里会有一个带名字的可执行文件(无 .dll 后缀),还有 runtimeconfig.json 和一堆 so/dll 文件

三、运行前检查权限和渲染后端

Linux 默认不给可执行文件执行权限,且 Avalonia 在无桌面环境(如 SSH 远程终端)下可能找不到显示服务。

稿定AI设计
稿定AI设计

AI自动去水印、背景消除、批量抠人像工具

下载
  • 给发布出的主程序加执行权限:chmod +x ./MyApp
  • 确保在图形桌面环境下运行(比如 deepin、Ubuntu GNOME),不要在纯 tty 或未启用 X11/Wayland 的终端里跑
  • 如果报 OpenGL/Vulkan 初始化失败,可强制走软件渲染(兼容性最高):
    export DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1
    export SKIA_SHARP_DISABLE_GPU=1
    ./MyApp

四、进阶:打包成 .deb 安装包(适合分发)

想让用户双击安装、自动建菜单快捷方式、统一卸载?就得打 deb 包。

  • 项目中加入 testapp.desktop(定义启动项)和 icon.png(图标)
  • 在 .csproj 里声明它们的 Linux 安装路径,例如:

  PreserveNewest
  /usr/share/applications/testapp.desktop
  • dotnet-deb 工具生成 deb:
    dotnet tool install --global dotnet-deb
    dotnet deb(在项目根目录执行)

基本上就这些。环境、发布、权限、渲染四步卡住一个,程序就起不来。不复杂但容易忽略。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

417

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

535

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

311

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

76

2025.09.10

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

394

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

574

2023.08.10

windows查看端口占用情况
windows查看端口占用情况

Windows端口可以认为是计算机与外界通讯交流的出入口。逻辑意义上的端口一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。怎么查看windows端口占用情况呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

688

2023.07.26

查看端口占用情况windows
查看端口占用情况windows

端口占用是指与端口关联的软件占用端口而使得其他应用程序无法使用这些端口,端口占用问题是计算机系统编程领域的一个常见问题,端口占用的根本原因可能是操作系统的一些错误,服务器也可能会出现端口占用问题。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

1126

2023.07.27

c++ 根号
c++ 根号

本专题整合了c++根号相关教程,阅读专题下面的文章了解更多详细内容。

25

2026.01.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.7万人学习

Git 教程
Git 教程

共21课时 | 3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号