zoukankan      html  css  js  c++  java
  • .net 跨平台桌面程序 avalonia:从项目创建到打包部署linux-64系统deepin 或 ubuntu。

    介绍:

    目前微软还没有跨平台桌面程序的开发框架。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.1 /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,发即时信息。

                       

         

                      

             

                       

         

          

      

  • 相关阅读:
    PID控制算法的C语言实现六 抗积分饱和的PID控制算法C语言实现
    PID控制算法的C语言实现五 积分分离的PID控制算法C语言实现
    python获取两个dict的不同
    将nosetests的echo结果保存到本地文件
    django 配置中STATICFILES_DIRS 和STATIC_ROOT不能同时出现
    Windows下使用最新的JDK1.7.0_51以上版本连接Jenkins出现SecurityException
    jenkins 启动slave,出现com.sun.deploy.net.FailedDownloadException: Unable to load resource: http://127.0.0.1:8080/jnlpJars/remoting.jar
    windows 下查看端口占用情况
    phpstorm + x-debug 进行php调试
    jenkins 升级jdk到1.8.0 报java.io.IOException:Unable to read /var/lib/jenkins/config.xml
  • 原文地址:https://www.cnblogs.com/zhaiganggang/p/14776247.html
Copyright © 2011-2022 走看看