目前微軟尚未跨平臺桌面程序的開發框架。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,發即時信息。