最近在搞一个国产麒麟系统的接口对接,因为,接口内含复杂的签名验证,而且还是离线环境,所以,postman不是很好用。
就想着哪个方式好一些,主要是有选择图片的操作,所以,在Electron和Avalonia中做选择,其他的很少支持linux系统的。
综合考虑还是选择Avalonia,毕竟原生开发,xaml也跟WPF基本一致,所以,就来个Avalonia做了,试了下效果还是很不错的。
这里只做一个简单的窗体,能在麒麟桌面跑,其他的可以参考WPF。
Avaloia安装打开 Visual Studio 2022 选择扩展菜单
选择扩展管理器
在扩展管理器里输入 Avalonia 关键词,然后把扩展都安装了。
然后,选择安装,就会显示下面,安装程序(需要关闭vs才可以,重复两次)
安装完毕会显示成功信息。
创建 Avaloia 项目先新建 Avaloia c# Project项目,作为默认项目。
我这边默认选择桌面应用。
这个设计模式(design pattern) 分为了两种,实际上就是MVVM的实现方式吧,ReactiveUI和Community toolkit,相对来讲,community toolkit应该跟WPF差不多,我就选择了这个。
剩下的都选应该也没啥问题,都是绑定了,资源嵌入之类的。
创建完就是下面这个项目,整体结构简单,也不复杂。
我们F5 ,运行起来项目,是这样的,我增加了点中文显示。
部署到麒麟系统项目右键发布,我设置了以下相关配置。
把生成的文件直接复制到目标系统上
麒麟系统信息
运行项目直接双击 AvaloniaApplication1.Desktop 会打开 文本编辑器。
所以,我们需要修改名称为 AvaloniaApplication1,然后,授予执行权限就可以运行了.
双击应用,选择直接运行。
然后会发现,什么都没有,太不正常了。
这个时候只能命令行执行
真是出现了异常,大概意思是字体异常。
字体异常处理在linux上不一定有默认的字体,那么,就需要导入相关字体,这里我选择了阿里云的商用免费字体。
访问 https://www.alibabafonts.com/#/font,下载你喜欢的字体
下载完后,大致是这个东西
只选择.ttf格式的文件就可以了,如下图所示
放到资源文件夹里,就像这样,我只放了一个,放的多,文件就越大。
还需要设置资源的嵌入类型,为 AvaloniaResource
如何获取字体的家族名字运行程序,选择你的字体文件
点击ok,就可以打开这个界面
点击 element,选择 font info
就可以看到字体的相关信息了
引入离线字体需要在入口处增加字体扩展
public static AvaloniaAppBuilderExtensions{public static AppBuilder UseFontAlibaba([Disallow] this AppBuilder builder, Action<FontSettings>? configDelegate = default) {var setting = new FontSettings(); configDelegate?.Invoke(setting);return builder.With(new FontManagerOptions { DefaultFamilyName = setting.DefaultFontFamily, FontFallbacks = new[] {new FontFallback { FontFamily = new FontFamily(setting.DefaultFontFamily) } } }).ConfigureFonts(manager => manager.AddFontCollection(new EmbeddedFontCollection(setting.Key, setting.Source))); }public FontSettings {public string DefaultFontFamily = "fonts:AvaloniaApplication1FontFamilies#Alibaba PuHuiTi";public Uri Key { get; set; } = new Uri("fonts:AvaloniaApplication1FontFamilies", UriKind.Absolute);public Uri Source { get; set; } = new Uri("avares://AvaloniaApplication1/Assets/Fonts", UriKind.Absolute); }}然后,在此处引用即可,其中 DefaultFontFamily 的内容,我并没有深入,大体分为了三部分
fonts:AvaloniaApplication1FontFamilies#Alibaba PuHuiTifonts: //字体标识AvaloniaApplication1FontFamilies# //自定义字体家族Alibaba PuHuiTi //字体家族名称 Alibaba PuHuiTi 3.0 65 Medium (Alibaba PuHuiTi )就可以了修改后,重新发布麒麟可以看到已经能运行了。
git地址https://github.com/kesshei/AvaloniaDemohttps://gitee.com/kesshei/AvaloniaDemo资源链接https://www.alibabafonts.com/#/fonthttps://fontforge.org/en-US/downloads/windows-dl/参考链接https://www.cnblogs.com/wdw984/p/17717864.html