介绍:

目前微软还没有跨平台桌面程序的开发框架。github上有一个团队开始自行研发跨平台桌面框架,其中一款叫avalonia。avalonia 采用 Xaml+C#,类似于wpf,可运行于.netframework,.netcore,是相对比较成熟的.net跨平台桌面应用技术。下面介绍如何创建 avalonia项目;如何在windows平台下,将程序打包成可在deepin 或 ubuntu 执行的.deb安装包,以及如何在deepin上安装(由于ubuntu 和 deepin都是基于debian的linux系统,本文以deepin 来演示)。

第一步:项目创建

1.项目创建之前,先在vs2019中安装avalonia 扩展。

2.创建 avalonia mvvm项目

注意:由于要安装在linux系统,创建项目的时候,项目名称建议用小写。不用小写时,打包安装包在linux上安装,如果已经安装了相同版本,则不会提示已安装相同版本,也不能通过双击安装包卸载。

 

项目结构如下:

3.F5运行项目,如果运行成功,则项目创建成功。

第二步:打包设置

在windows上将项目打包成可在 deepin 或ubuntu上安装的.deb安装包文件,需要对项目做一些配置,设置应用程序生成快捷方式,应用程序图标。

1.项目添加.desktop文件和.png图片(或者是其他格式的图片)。

.desktop文件用于生成桌面快捷方式,可新建.txt文件(utf-8格式),按下图编辑内容,改后缀为 .desktop,粘贴到项目中;png图片用于生成应用程序图标(也可用icon图片)

[Desktop Entry]
Name=testapp
Type=Application
Exec=/usr/share/testapp/testapp
Icon=/usr/share/icons/testapp.png

linux系统的.desktop文件可参考 https://blog.csdn.net/yiferhuang/article/details/86634589 扫盲。

2.文件配置:双击解项目名称,打开项目文件。添加.desktop和.png

<ItemGroup>
<Content Include="testapp.png" CopyToPublishDirectory="PreserveNewest">
<LinuxPath>/usr/share/icons/testapp.png</LinuxPath>
</Content>
<Content Include="testapp.desktop" CopyToPublishDirectory="PreserveNewest">
<LinuxPath>/usr/share/applications/testapp.desktop</LinuxPath>
</Content>
</ItemGroup>

第三步:打包发布

在windows10下,打包成可在ubuntu上安装的deb安装包。参考 https://github.com/qmfrederik/dotnet-packaging

1.安装 .net打包deb工具:打开cmd 执行以下命令

dotnet tool install --global dotnet-deb

2.执行打包命令:cmd进入项目文件夹

3.按顺序逐条执行以下命令,打包发布:

第一条指令是在项目中安装打包工具,会在项目引用一个包。

第二条指令会将项目的目标运行时还原为linux-x64

第三条执行执行打包发布,会输出.deb文件存放的位置。

注意:逐条执行命令时,执行到第三条有时候会报错,说需要还原 目标运行时为 linux-x64,这时候,重新执行如下三条命令即可,或者将第一条和第二条执行顺序换一下

dotnet restore -r linux-x64
dotnet deb install
dotnet msbuild testapp.csproj /t:CreateDeb /p:TargetFramework=netcoreapp3. /p:RuntimeIdentifier=linux-x64 /p:Configuration=Release

4.执行发布命令后,会在输出路径上生成.deb文件,将其复制到linux 系统deepin(或者ubuntu) 上(注意:打包时,是独立部署,也就是不需要在目标机器上安装.netcore 运行时)。

第四步:运行安装包,在deepin上安装应用程序。

将复制到deepin系统上的.deb文件,双击,即可安装应用程序。安装后,应用程序会出现在列表中。双击即可打开程序。

avalonia 官网:http://avaloniaui.net/

打包参考网址:https://github.com/qmfrederik/dotnet-packaging

avalonia网上即时交流,可在上面即时提问:https://gitter.im/AvaloniaUI/Avalonia

推荐的avalonia在github上的网址,可提issue:https://github.com/AvaloniaUI/Avalonia/issues

可参考的avalonia网址,里面有功能齐全的demo:https://github.com/AvaloniaUI/Avalonia

avalonia社区网址:https://github.com/AvaloniaCommunity

说明:目前国内关于avalonia的资料比较少,遇到问题,可到bing国际版去搜索答案;或者去上面的网站提issue,发即时信息。

    

.net 跨平台桌面程序 avalonia:从项目创建到打包部署linux-64系统deepin 或 ubuntu。的更多相关文章

  1. NetCore跨平台桌面框架Avalonia的OSX程序打包

    虽然工作开发语言已经转到了java,但平时仍会用netcore做一些小工具,提升工作效率,但是笔记本换成了Mac,小工具只能做成命令行形式,很是痛苦,迫切需要一个.net跨平台的桌面程序解决方案. 为 ...

  2. Electron开发跨平台桌面程序入门教程

    最近一直在学习 Electron 开发桌面应用程序,在尝试了 java swing 和 FXjava 后,感叹还是 Electron 开发桌面应用上手最快.我会在这一篇文章中实现一个HelloWord ...

  3. SpringBoot项目如何进行打包部署

    springboot的打包方式有很多种.有打成war的,有打成jar的,也有直接提交到github,通过jekins进行打包部署的.这里主要介绍如何打成jar进行部署.不推荐用war,因为spring ...

  4. 跨平台桌面程序框架Electron

    https://www.npmjs.com/ js库

  5. C#搞跨平台桌面UI,分别实现Windows,Mac,Linux屏幕截图

    搞跨平台IM,截图功能少不了. Windows 创建GDI的兼容位图,把桌面的图像通过BitBlt拷贝到兼容位图里,通过兼容位图的数据指针创建Bitmap对象,由于兼容位图的内存是非托管的,Bitma ...

  6. cocos2d-x项目创建和打包

    1.创建C++的cocos2d-x项目:cocos new test_cpp02 -p com.benmutou.helloWorld -l cpp -d projects C++未编译目录: C++ ...

  7. Vue项目创建build打包后可修改的配置文件

    需要一个配置文件,能在项目打包(build)时不被打包,方便修改,同时项目刷新时读取改配置. 实现方法如下: 1.在项目的static目录下创建project.config.json文件(名称随意,建 ...

  8. 使用Eclipse对SpringBoot项目如何进行打包部署

    1,打包概要介绍: 自己做了个小demo,突然想练一下如何打包发布,期间出现了两个错误,第一个是加载不到主类,第二个是加载不到jsp文件,一会会把这两个问题一一陈述,以及解决方法. 1.1,先检查po ...

  9. DELPHI开发LINUX桌面程序

    DELPHI开发LINUX桌面程序 DELPHI官方目前为止尚不能开发LINUX桌面程序. 但三方控件FmxLinux(商业控件)是可以的.网上有破解版本.

随机推荐

  1. web自动化测试实战之批量执行测试用例

    01实战之分离测试固件 在UI 自动化测试中,不管编写哪个模块的测试用例,都需要首先在测试类中编写测试固件初始化WebDriver类及打开浏览器,执行登录,才能进行下一步业务逻辑的操作,测试用例执行完 ...

  2. OSCP Learning Notes - Enumeration(2)

    HTTP Enumeration Target Host IP: 10.0.0.20 Brute Forcing using DirBuster 1. Start the dirbuster and ...

  3. CI/CD系列之阿里云云效2020应用篇

    目录 前言 实战 制品仓库 maven配置 项目pom配置 代码管理 流水线 参考资料 前言 前不久登录阿里云后台,看到云效的介绍,出于好奇便点进去看了看,刚开始以为云效是类似Jenkins的一套自动 ...

  4. MapReduce之自定义分区器Partitioner

    @ 目录 问题引出 默认Partitioner分区 自定义Partitioner步骤 Partition分区案例实操 分区总结 问题引出 要求将统计结果按照条件输出到不同文件中(分区). 比如:将统计 ...

  5. .net core https 双向验证

    文章来自:https://www.cnblogs.com/axzxs2001/p/10070562.html 关于https双向认证的知识可先行google,这时矸接代码. 为了双向认证,我们首先得准 ...

  6. (int) 与 Convert.ToInt32()

    ((xEnd - xStart) / newSize) + 1 = 172.99999999 int Width = (int)((xEnd - xStart) / newSize) + 1;  = ...

  7. python beautifulsoup基本用法-文档搜索

    以如下html段落为例进行介绍 <html> <head> <title>The Dormouse's story</title> </head& ...

  8. PHP natcasesort() 函数

    定义和用法 natcasesort() 函数用"自然排序"算法对数组进行排序.键值保留它们原始的键名. 在自然排序算法中,数字 2 小于 数字 10.在计算机排序算法中,10 小于 ...

  9. 珍藏多年的学习资料300G+,赶紧免费领取,从此离大神更进一步

    将时间线拉到2014     2014年的寒冬,每天早晨六点钟,都会一个弱小的身影,从学校寝室出发,走在去实习公司的路上.经过食堂边的包子铺,他会顺手买两个包子,一杯豆浆,老板也会像往常一样热情的吆喝 ...

  10. luogu P5043 【模板】树同构 hash 最小表示法

    LINK:模板 树同构 题目说的很迷 给了一棵有根树 但是重新标号 言外之意还是一棵无根树 然后要求判断是否重构. 由于时无根的 所以一个比较显然的想法暴力枚举根. 然后做树hash或者树的最小表示法 ...