【转】Avalonia 周边介绍
转自:豆包 AI
Avalonia 基础框架本体永久 MIT 免费,不需要注册、不需要付费,可以直接商用发布;收费/需要账号注册的全部是「可选商业工具、高级控件包、XPF」,完全可以不买
✅ 免费部分(不需要注册、无授权码,直接Nuget引用)
Avalonia、Avalonia.Controls、基础控件、渲染引擎、基础Window/List/Grid、老版开源TreeDataGrid、Rider插件、VS Code插件,全部MIT,随便商用。
重点:老版TreeDataGrid是开源免费;新版TreeDataGrid是 Avalonia Pro 专有收费控件,这点很多人踩坑。
一、Avalonia 官方商业套件(需要注册Avalonia账号 + 授权码激活)
官网现在统一三层:Plus / Pro / Enterprise(原Accelerate更名)
- Avalonia Plus(订阅收费)
- 内容:新版VS扩展、新版DevTools可视化调试器、Parcel打包工具(一键打包签名安装包)
- 用途:开发工具增强,不包含高级UI控件
- 规则:商用项目必须订阅;非商业/学生可以申请Community免费许可(要注册账号)
- Avalonia Pro(订阅,包含Plus全部能力 + 专有高级控件)⭐ 最容易踩坑 专有收费控件清单:
- TreeDataGrid(新版高性能树形表格,老版MIT TreeDataGrid还能继续免费使用)
- NativeWebView(原生WebView,不打包Chromium,信创很有用)
- VirtualKeyboard 虚拟键盘、MediaPlayer、高级图表等
- 使用方式:项目csproj里面配置LicenseKey,编译+运行校验授权,必须注册Avalonia账号获取License
- Avalonia Enterprise
- Pro全部内容 + 商业控件源码访问、LTS长期支持、工程团队直接SLA技术支持、离线空气隔离部署授权。适合大型政企/工业项目。
二、Avalonia XPF(独立重量级商业产品,单独许可,必须注册)【信创WPF迁移重点关注】
XPF = 在Linux/国产系统直接跑原有WPF代码,不用大规模改写WPF工程,独立产品,不属于Plus/Pro
- 定位:WPF兼容层,适合存量WPF迁移银河麒麟/统信UOS
- 许可模式:按应用程序授权(每个程序一套license,不是按开发者人头),永久运行许可;订阅只是1年更新+技术支持
- 三个档位:Internal(内部自用)、Business(交付给客户的商用软件)、Enterprise(移动端、Wasm、嵌入式Linux)
- 国产嵌入式Linux属于额外付费Add-on
重要:不用XPF,单纯原生Avalonia开发,完全不需要买这个。如果你是从零新建Avalonia项目,不需要XPF。
三、第三方配套控件库(独立收费,和Avalonia官方无关)
这些是.NET生态老牌控件厂商,支持Avalonia,单独购买、单独注册许可,信创项目如果需要复杂图表、Grid、报表会用到:
- Syncfusion Avalonia控件:表格、图表、PDF、报表,商业订阅
- Telerik UI for Avalonia:全套业务控件,订阅制
- SciChart(高性能实时图表,工业HMI常用):商业许可,工业大屏高频使用
- Actipro Avalonia:高级编辑器、Ribbon、属性网格,商业收费
社区免费控件库:Avalonia.Controls.DataGrid、Material.Avalonia、FluentAvalonia 全部MIT,免费商用,不用注册授权,信创项目很常用。
四、信创项目选型建议(重点)
✅ 推荐方案(无任何官方付费组件)
Avalonia开源核心 + Material.Avalonia/FluentAvalonia + 开源DataGrid + 自己封装表格/图表 全程MIT,不需要注册Avalonia账号、不需要License、无授权校验,打包到银河麒麟/统信完全没问题表格需求:用开源DataGrid;树形表格:用旧版MIT TreeDataGrid(注意包名区分,不要引入Pro版本)
⚠️ 什么时候才需要付费:
- 需要新版TreeDataGrid / NativeWebView / 官方虚拟键盘 → Avalonia Pro
- 存量WPF项目,不想大规模重构,直接迁移到国产Linux → Avalonia XPF
- 工业实时大屏、高性能图表 → SciChart
- 企业级长期SLA支持、源码访问 → Enterprise
五、关键避坑总结
- Avalonia基础框架永远免费商用,没有运行时水印、没有强制注册,很多人混淆:收费的只是开发增强工具 + 新版高级控件 + XPF
- 老TreeDataGrid MIT免费;新TreeDataGrid是Pro收费控件,Nuget包不一样,不要混用
- Community免费许可仅限非商业项目;商用项目如果想用Plus/Pro工具,必须购买订阅
- XPF是独立产品,每个应用单独授权,价格比较贵,从零开发Avalonia尽量避开XPF
- 第三方控件(Syncfusion/Telerik/SciChart)属于独立产品,不属于Avalonia官方套件
豆包整理的一份纯开源Avalonia信创项目推荐NuGet清单(全部MIT,无任何商业依赖)
✅ 纯开源 Avalonia 信创项目 NuGet 清单(全部 MIT,无商业授权、无水印、无需注册)
适配:银河麒麟V10、统信UOS V20;支持 X64 / ARM64 / LoongArch64;Avalonia 推荐固定版本 12.0.x(稳定、原生龙芯支持)
基础核心包(必装)
<!-- Avalonia 核心 -->
<PackageReference Include="Avalonia" Version="12.0.10" />
<PackageReference Include="Avalonia.Desktop" Version="12.0.10" />
<PackageReference Include="Avalonia.Themes.Fluent" Version="12.0.10" />
<PackageReference Include="Avalonia.Fonts.Inter" Version="12.0.10" />
窗口、弹窗、基础控件增强
<!-- FluentAvalonia:复刻WinUI风格控件,NavigationView、CommandBar、Dialog、ToggleSplitButton,信创政务界面很常用 -->
<PackageReference Include="FluentAvalonia" Version="2.2.0" />
<!-- Material.Avalonia:Material Design 风格,表单、输入框、卡片 -->
<PackageReference Include="Material.Avalonia" Version="3.0.0" />
<PackageReference Include="Material.Avalonia.Dialogs" Version="3.0.0" />
表格、树形表格(重点!免费TreeDataGrid,不是Pro收费版)
<!-- 普通DataGrid 开源版本,MIT -->
<PackageReference Include="Avalonia.Controls.DataGrid" Version="12.0.10" />
<!-- 【免费旧版TreeDataGrid,MIT,⚠️ 不要安装 Avalonia.TreeDataGrid(新版Pro收费)】 -->
<PackageReference Include="Avalonia.Controls.TreeDataGrid" Version="11.0.10" />
⚠️ 包名区分大坑:
- ✅
Avalonia.Controls.TreeDataGrid:MIT免费- ❌
Avalonia.TreeDataGrid:Avalonia Pro商业控件,带授权校验
工具类、MVVM(推荐CommunityToolkit,微软维护MIT)
<!-- MVVM 首选,ObservableObject、RelayCommand,信创项目广泛使用 -->
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.2" />
<!-- 可选:依赖注入,大型项目用 -->
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" />
其他实用开源组件(按需选用)
<!-- 文件选择器增强、文件拖拽辅助 -->
<PackageReference Include="Avalonia.Styling" Version="12.0.10" />
<!-- 日志(可选)Serilog MIT -->
<PackageReference Include="Serilog" Version="3.1.1" />
<PackageReference Include="Serilog.Sinks.Console" Version="5.0.1" />
<!-- 图标:Material Icons 字体图标 -->
<PackageReference Include="Material.Icons.Avalonia" Version="2.1.0" />
📌 国产系统中文方块字体修复代码(放在App.axaml.cs)
using Avalonia;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Markup.Xaml.Styling;
namespace YourAppName;
public partial class App : Application
{
public override void Initialize()
{
AvaloniaXamlLoader.Load(this);
// 全局字体回退,适配银河麒麟、统信UOS
this.Resources["FontFamily"] =
new Avalonia.Media.FontFamily("WenQuanYi Zen Hei,Noto Sans CJK SC,Source Han Sans CN,SimHei");
}
public override void OnFrameworkInitializationCompleted()
{
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
{
desktop.MainWindow = new MainWindow();
}
base.OnFrameworkInitializationCompleted();
}
}
配套 axaml 全局引用:所有TextBlock默认继承这个FontFamily
📦 信创发布命令(.NET 8 + NativeAOT,单文件,自带Runtime,目标机器不用装dotnet)
# 兆芯/海光 x64
dotnet publish -c Release -r linux-x64 --self-contained true /p:PublishAot=true /p:IncludeNativeLibrariesForSelfExtract=true
# 飞腾/鲲鹏 arm64
dotnet publish -c Release -r linux-arm64 --self-contained true /p:PublishAot=true /p:IncludeNativeLibrariesForSelfExtract=true
# 龙芯 LoongArch64(Avalonia12+)
dotnet publish -c Release -r linux-loongarch64 --self-contained true /p:PublishAot=true /p:IncludeNativeLibrariesForSelfExtract=true
✅ 项目避坑清单
- 全程不要安装包名带
Avalonia.Pro、Avalonia.TreeDataGrid的包,会引入授权校验 - 国产Linux优先X11会话,Wayland会有剪贴板/窗口兼容性问题
- 打包前确认系统依赖:
libgl1-mesa-dev libgbm-dev libinput-dev - NativeAOT编译比较耗内存,编译龙芯包建议至少16G内存
浙公网安备 33010602011771号