C#跨平台开发桌面程序(Avalonia)

C# 专栏收录该内容
17 篇文章 0 订阅

这两天一直在研究跨平台桌面程序开发,我玩过的方案,大致有如下几个:

  • WinForm + Wine
  • Electron + Vue/Node/NW等等
  • QT
  • JavaFX
  • Java AWT Swing(界面丑,古老技术,运行时需要JDK,发布程序时,包太大)
  • Avalonia

个人感觉,单独就桌面程序开发而言,对开发者最友好的解决方案还得是微软的winform开发,其入门何其简单,想必大家应该都是知道的,界面拉拉拽拽,按钮事件直接双击生成。。。

研究感受

WinForm + Wine:太麻烦,程序运行需要部署环境。一般对于在微软桌面下开发习惯的人来说,对于Linux都不是太熟悉,再让其部署Linux环境,估计会肛裂
Electron:发布程序时,包太大,另外Electron官方对XP不支持,但是网上也有大佬魔改版本。其框架成熟,文档和教程也很程序,也有大厂在使用该框架,例如微软的VS Code,GitHub的桌面端程序等。🙄但我不是个前端。。。
QT:QT应该是大名鼎鼎了,但是其入门门槛较高,现在大多数程序员是半路出家,或接触Java、C#、Python较多,就C++而言,可以整死一批程序员了,还要考虑QT的编译环境、构建套件、版本、头文件和库等问题又能死一批程序员。当然,不是我吹,我C/C++语言还是可以的😎哈哈,哪怕是我去开发QT,我也会觉得QT和WPF相比,WPF界面设计基于XAML,比QT要开放的多,而且设计速度上更快,最致命的一点是,C#/JAVA等高级语言有语法糖,可以帮助开发者快速撸代码。。。
JavaFX:是Oracle从JDK8开始支持的一项新的GUI开发框架,目前相关开发文档、博文较少,遇见问题大多需要开发者自己排查,但是要运行程序时,必须要有JDK或JRE的环境支持,如果打包环境到可执行程序里,会导致发布程序太大。
Java AWT Swing:古老的技术,学习Java的,应该都会了解一点点,那蓝渐变底色的按钮。。。我就不逼逼了。。。大家都懂的。
Avalonia:这是个近几年才出的新框架,基于.Net Core,和WPF开发基本一致,编译后,再通过dotnet命令打包成各个平台的发布版本,可以直接在Linux系统下双击打开程序。具体细节可以去官网查看,这也是我今天主要说的框架。

开发准备

  • VS 2019
  • AvaloniaVS.vsix扩展包
  • 流弊的光头开发者一枚

我使用的一直都是VS 2019最新版本。。。对Avalonia扩展的支持可能有点毛病。。。

新建Avalonia工程

在这里插入图片描述
类似于WPF新建工程,不过直接给我们提供了MVVM架构的工程,新建时自动帮我们多引入一个Avalonia.ReactiveUI的包,引入这个包具体是干什么用的,我也还没考究过,待后面发现是用来干什么用的,我再回来修改博客吧。
具体工程结构区别如下图:
在这里插入图片描述
有一点,新建的工程,包不是最新的,需要自行更新到0.9.10,目前最新版本,修复N个BUG,可以仔细看一下官网的版本发布日志,能得到很多需要的东西!!!
比如DataGrid,就是我查阅官网才知道的,是在0.8以后才支持的,并且要另外引入一个包!
还有一点要注意,我不知道是不是所有版本的VS都是这样,但是我的VS2019目前是这个样子,对Avalonia框架的设计器支持不友好,对于XAML的解析也是一直报错,如下图所示。
在这里插入图片描述

开发简单示例程序

首先我使用了如下几个包,并简要说明一下:
在这里插入图片描述
Chloe:数据库ORM框架
Spire:Office文件的操作,有钱的大爷可以不用Free版本
MySql.Data:数据库连接驱动
Xfinium.Pdf.View.Wpf.NetCore:PDF阅读控件
Avalonia.Controls.DataGrid:DataGrid控件

MessageBox

由于不提供MessageBox提示框,所以这个控件这里需要我们自己开发

Windows运行效果演示

在这里插入图片描述

Linux运行效果

生成Ubuntu 18.04版本

在这里插入图片描述

运行效果

在这里插入图片描述

神奇的BUG

新增XAML文件时,会报错误,并且不能选择新增项目的类型。应该是框架扩展在VS里的异常导致。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后目录变成了如下图的样子,我目前的解决办法是在文件夹下手动新建页面文件,然后工程目录会自动识别:
在这里插入图片描述

总结

1.Chloe数据库框架在跨平台下可以正常使用
2.DataGrid也可以正常使用,MVVM绑定数据也是可以的
3.Office和PDF等后续在测试,如果没有控件支持的话,个人觉得Office和PDF可以使用Web,然后程序里对Office和PDF的浏览可以使用CefSharp.Wpf控件解决🤓要相信,没有什么是前端开发处理不了的!!!

后续测试跨平台下ToupCam显微镜的连接和调用
在美国实体名单的封锁下,基于Linux的国产系统普及,只是时间问题。。。

  • 1
    点赞
  • 14
    评论
  • 19
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 1024 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值