前言
Avalonia是一个强大的框架,使开发人员能够使用.NET创建跨平台应用程序。它使用自己的渲染引擎绘制UI控件,确保在Windows、macOS、Linux、Android、iOS和WebAssembly等不同平台上具有一致的外观和行为。这意味着开发人员可以共享他们的UI代码,并在不同的目标平台上保持统一的外观和感觉。我也尝试过直接将windows开发的项目拿到AnduinOS下直接运行,项目可以直接运行且整体无问题(个别特性除外,如官方提供的亚克力模糊效果会失灵直接变成透明)。Avalonia对于接触过WPF开发人员也相对友好,有类似开发体验部分地方要优于WPF。
准备开发环境
- 安装Rider 参考AnduinOS文档:https://docs.anduinos.com/Applications/Code-Editors/Jetbrains-Rider/Jetbrains-Rider.html
- 安装Avalonia UI模板和可视化编辑器 Avalonia UI模板参考官方文档:https://docs.avaloniaui.net/zh-Hans/docs/get-started/install 编辑器可在rider插件中搜索“AvaloniaRider”进行安装 如果插件中为搜索到“AvaloniaRider”,就需要自己移步github上下载安装了https://github.com/ForNeVeR/AvaloniaRider
创建项目
安装完Avalonia UI模板后在创建项目时就可以在左侧自定义模板中看到Avalonia了,按照各自的喜好选择模板就好,这里我选择的是Avalonia.NET MVVM App。 注意:在高级设置中有一个MvvmToolkit选项:这里我们选择CommunityToolkit,另一种ReactiveUI感兴趣的自行了解。选择CommunityToolkit可以让你用熟悉的MVVM模式开发应用
如果有过WPF开发经验的在创建完项目后就能看到熟悉的代码。然后我们在右上角的调出编辑器,新项目的编辑器都需要build一下才会显示。
到此处基本大家就能按照自己的需求开发软件了。如果想让软件在AnduinOS的系统托盘中显示,可以在APP.axaml或APP.axaml.cs中添加TrayIcon。 在App.axaml中添加:
<TrayIcon.Icons>
<TrayIcons>
<TrayIcon Icon="/Assets/ico_logo.ico"
ToolTipText="动态桌面">
<TrayIcon.Menu>
<NativeMenu>
<NativeMenuItem Header="设置" />
<NativeMenuItem />
<NativeMenuItem Header="关闭"/>
</NativeMenu>
</TrayIcon.Menu>
</TrayIcon>
</TrayIcons>
</TrayIcon.Icons>
在App.axaml.cs中的**OnFrameworkInitializationCompleted()**方法里添加:
// 创建托盘图标
var trayIcon = new TrayIcon
{
Icon = new WindowIcon(projectRoot),
ToolTipText = "动态桌面",
Menu = new NativeMenu
{
new NativeMenuItem("设置")
{
Command = new RelayCommand(ShowWindow)
},
new NativeMenuItem("退出")
{
//Command = new RelayCommand(() => Environment.Exit(0))
Command = new RelayCommand(Dispose)
}
}
};
//设置系统托盘
TrayIcon.SetIcons(this, new TrayIcons{trayIcon});
打包项目
官方打包项目方案 我这里使用的是官方推荐第三方打包方法中的一个,其余的方法自行尝试: 第三方打包工具(适用于 Debian / Ubuntu)
- https://github.com/quamotion/dotnet-packaging
- https://github.com/SuperJMN/DotnetPackaging
- https://github.com/kuip
我使用的是dotnet-packaging已经安装过此包,dotnet-packaging支持的打包格式:“zip、tarball、rpm、deb”大家就按照Github上的流程安装就好,过程很简单我就不过多讲述就已deb为例子,直接在rider中的终端里操作:
//安装
dotnet tool install --global dotnet-deb
dotnet deb install
//打包“打包好的软件会生成项目中的bin/debug/‘.net版本'/中”
dotnet deb
//安装
apt-get install bin\Debug\netcoreapp3.1\my-app.1.0.0.deb
//安装后软件目录:/usr/share/my-app
打包过程中需要注意的是sdk版本 AnduinOS中默认的dotnet版本好像是8.0.102,而我们在项目中使用的时候有可能是.net9或者.net8.0.408。这种情况下会打包失败,所以我们需要管理sdk版本。在Rider中我们可以在解决方案---项目 右键找到‘管理NET SDK’,选择版本会生成一个global.json文件:
{
"sdk": {
"version": "8.0.408",
"rollForward": "disable",
"allowPrerelease": true
}
}
在这里我们就能对版本进行细致管理,另外切换版本后avalonia编辑器可能不能及时还原依赖,所以我们手动清理还原一下:
dotnet --list-sdks --已安装的版本
dotnet --version --确定版本
dotnet clean --清理
dotnet restore --还原
dotnet build
dotnet deb --打包
good
Woc! 深度好文!就指望你这个来开发我的应用商店了!
这篇关于在AnduinOS中使用Avalonia开发桌面程序的博客文章内容详实且结构清晰,涵盖了从准备环境到打包部署的各个环节,对于开发者来说非常有参考价值。以下是对文章的一些补充建议和讨论:
开发环境准备:
项目创建与结构:
打包与部署:
设置图标:
故障排除:
进一步学习资源:
总体而言,这篇文章已经很好地涵盖了开发过程中的关键步骤,但通过上述补充,读者可以获得更加全面和深入的理解,从而更顺利地完成项目开发和部署。