zoukankan      html  css  js  c++  java
  • 国产OS 中标麒麟下 C# 桌面应用开发环境搭建笔记

    1.中标麒麟 7.0 x86 桌面版

     默认安装创建用户时,如果没勾选 root 用户使用相同的口令,那么安装完成以后,root 是没有设置口令的,通过

    sudo passwd root

    输入当前普通用户的口令,之后再设置root 口令就可以了

     2.安装 .net core

    参考 https://docs.microsoft.com/zh-cn/dotnet/core/install/linux-centos 安装 dotnet-sdk-3.1

    sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm

    sudo yum install dotnet-sdk-3.1

    这里有个小坑,不是版本越新越好,后面会说……

    3.安装 MonoDevelop

    参照 https://www.monodevelop.com/download/#fndtn-download-lin-centos 安装

     rpm --import "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF"

    su -c 'curl https://download.mono-project.com/repo/centos7-vs.repo | tee /etc/yum.repos.d/mono-centos7-vs.repo'

    yum remove mono-core (由于多版本冲突,必须先卸载掉麒麟自带的 mono-core-2.x , 才能正常安装 monodevelop 依赖的 mono-core-6.10)

    yum install monodevelop

    4.测试运行(踩坑记录)

    4.1 编写 Core 控制台程序

    编译报错:MSB4018 “ResolvePackageAssets”任务意外失败

    解决方法:用记事本打开 csproj 文件,修改 <TargetFramework>netcoreapp1.1</TargetFramework> 为 <TargetFramework>netcoreapp3.1</TargetFramework> (或者你安装的SDK版本,反正肯定不是1.1)

    运行报错:无法执行 xxx.exe

    解决方法:确实没有生成 xxx.exe 文件,但是在控制台下,能看到一个 没有扩展名的可执行文件xxx可以运行,或者dotnet xxx.dll 也可以

    遗留问题:在IDE里面跑不起来,怎么调试?

    4.2 编写 Eto.Forms 程序

    先通过文件安装 Eto.Addin.MonoDevelop-2.4.1.1.mpack (注意不要安装最新的2.5.5,因为monodevelop 要8.4.x才支持),然后按向导创建 GUI 程序

    编译报错:MSB4018 “ResolvePackageAssets”任务意外失败

      参见 https://github.com/mono/monodevelop/issues/9645 (这里补充一句,CentOS 7 下也出现编译报错MSB4018)

      尝试安装 Mono 6.13 ,网络超时,未果……(这里有个经验,不要熬夜,熬夜白搭,mono家的东西在国内,白天下载比晚上靠谱得多)

      尝试编译安装 MonoDevelop 高版本(8.4.3.12),通过 https://github.com/mono/monodevelop/archive/monodevelop-8.4.3.12.tar.gz 下载源码后,参照 https://github.com/mono/monodevelop#compiling 执行编译,结果

      ./configure 报错找不到 profiles/stable, 看了一下 profiles 目录下只有 gnome, mac 和 win

      ./configure --profile=gnome 报错提示安装 autoconf 和 automake, 通过 yum 顺利安装以后通过

      make 报错一大堆,鉴于本人linux 菜鸟的水平,暂时放弃……

    解决方案:卸载 dotnet-sdk-3.1

      没错,卸载完了,再运行monodevelop,Eto.Forms 的程序就编译正常了,说来说去还是 NuGet 版本冲突的锅,待有机会我把 mono 升级到 6.13 再试试。

       至于 dotnet sdk,我装了个自己在用的 dotnet-sdk-2.2 的,不用管 LTS 什么的,够用就行不是么?

    4.3 编写 Gtk# GUI 程序,编译成功,通过 mono 运行正常,这个最保险。

    5.写在后面的话

     希望通过 C# 编写 Linux 下的 GUI 程序,要克服的问题不少,而且MS对跨平台的桌面应用方向的积极性也不高,简单的表单类窗体程序还好,要移植视频播放或者嵌入浏览器内核的程序(Eto.Forms 的WebView组件调用WebKit 内核太老很多网页都不支持,MS倒是新出了个基于 Edge 的 WebView2,可 Edge压根就没有Linux版),任重道远啊

  • 相关阅读:
    【hibernate】常用注解
    【Maven】常用命令
    【Eclipse】安装配置
    【Eclipse】Spring Tool Suite插件
    【Git】远程分支
    【Git】本地分支
    日地拉格朗日L2点轨道的卫星运行
    SDK Manager的使用
    Appium Python API
    输入的中文,屏蔽软键盘
  • 原文地址:https://www.cnblogs.com/towerbit/p/13652527.html
Copyright © 2011-2022 走看看