目前微软尚未跨平台桌面程序的开发框架。github上有一个团队开始自行研发跨平台桌面框架,其中一款叫avalonia。avalonia 采用 Xaml+C#,相似于wpf,可运行于.netframework,.netcore,是相对比较成熟的.net跨平台桌面应用技术。下面介绍如何建立 avalonia项目;如何在windows平台下,将程序打包成可在deepin 或 ubuntu 执行的.deb安装包,以及如何在deepin上安装(因为ubuntu 和 deepin都是基于debian的linux系统,本文以deepin 来演示)。linux
注意:因为要安装在linux系统,建立项目的时候,项目名称建议用小写。不用小写时,打包安装包在linux上安装,若是已经安装了相同版本,则不会提示已安装相同版本,也不能经过双击安装包卸载。 git
项目结构以下:github
在windows上将项目打包成可在 deepin 或ubuntu上安装的.deb安装包文件,须要对项目作一些配置,设置应用程序生成快捷方式,应用程序图标。ubuntu
.desktop文件用于生成桌面快捷方式,可新建.txt文件(utf-8格式),按下图编辑内容,改后缀为 .desktop,粘贴到项目中;png图片用于生成应用程序图标(也可用icon图片)windows
[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 扫盲。app
<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框架
dotnet tool install --global dotnet-deb
第一条指令是在项目中安装打包工具,会在项目引用一个包。mvvm
第二条指令会将项目的目标运行时还原为linux-x64工具
第三条执行执行打包发布,会输出.deb文件存放的位置。网站
注意:逐条执行命令时,执行到第三条有时候会报错,说须要还原 目标运行时为 linux-x64,这时候,从新执行以下三条命令便可,或者将第一条和第二条执行顺序换一下
dotnet restore -r linux-x64 dotnet deb install dotnet msbuild testapp.csproj /t:CreateDeb /p:TargetFramework=netcoreapp3.1 /p:RuntimeIdentifier=linux-x64 /p:Configuration=Release
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,发即时信息。