Avalonia开发笔记

发布时间 2023-07-24 20:14:15作者: wzwyc

官网:
https://avaloniaui.net/

源码:
https://github.com/AvaloniaUI/Avalonia

目前最新版本:11.0.0 (2023/7/24)

最新的11.0.0版本相对于之前的版本,改动比较大。因为刚刚升级,可能还有一些问题。
目前基于Avalonia的控件都已经升级,不过也有一些控件是还没有升级的,类似OxyPlot.Avalonia。

目前我们已经拿Avalonia做了好几个跨平台的项目。跟WPF非常相似,还是挺不错的。
并且这个平台一直在更新,从开始接触到现在,也是已经升级了好多个版本。
很多第三方的控件和开发库都基于Avalonia进行了移植。常规的开发基本上没啥问题。
类似曲线图等控件,可选用OxyPlot或LiveCharts2。

编辑器推荐

Visual Studio 2022 + Avalonia for Visual Studio 2022

需要安装一个插件,但是XAML界面下,代码提示功能比较弱,基本上算没有,写起来不是很方便。

JetBrains Rider

目前最新版本是2021版本,本身是商用,可以试用30天。JetBrains Rider的代码提示功能做得挺不错的,不过代码调试有时候没VS方便,可以两个IDE结合起来使用。
如果是在Linux系统下开发,因为没有VS编译器可用,感觉JetBrains Rider会是最好的选择,相比较VS Code,集成度会更高,代码提示等方面都会做得更好一点。

VS Code

VS Code开源免费,各个操作系统都支持,在Linux等操作系统下也是一个不错的选择。可以用VS Code编辑代码,然后用dotnet来编译执行。
不过我用的比较少,现在大部分时候还是在Windows上开发完,然后拿到Linux上执行和调试。

系统测试情况

目前试了一下,能够正常运行的系统,除了Windows系统外,流行的Ubuntu,Centos,Redhat这些系统应该都没啥问题。
目前因为国产化要求,经常需要运行在银河麒麟系统下,目前测试了没有啥问题。
在Linux系统可能会出现因为找不到字体运行失败的问题,需要指定一下字体。
Avalonia 11.0.0版本之后,处理的方式会有差异。

Avalonia的应用可以打包成deb安装包。也可以基于软件包设置桌面图标,操作方法参考:

Ubuntu系统下为Avalonia应用创建桌面图标 - wzwyc - 博客园
https://www.cnblogs.com/wzwyc/p/14820893.html

FAQ常见问题解决

1、“Default font family name can't be null or empty.”报错

Avalonia 11.0.0的处理方式:

public static AppBuilder BuildAvaloniaApp()
{
    var Settings = AppSettings.Instance;
    FontManagerOptions options = new();
    if (OperatingSystem.IsLinux())
    {
        options.DefaultFamilyName = Settings.LinuxFamilyName;
    }
    else if (OperatingSystem.IsMacOS())
    {
        options.DefaultFamilyName = Settings.MacOSFamilyName;
    }
    else if (OperatingSystem.IsWindows())
    {
        options.DefaultFamilyName = Settings.WindowsFamilyName;
    }

    return AppBuilder.Configure<App>()
                .UsePlatformDetect()
                .LogToTrace()
                .WithInterFont()
                .UseReactiveUI()
                .With(options);
}