国产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版),任重道远啊
国产OS 中标麒麟下 C# 桌面应用开发环境搭建笔记的更多相关文章
- 《Node.js入门》CentOS 6.5下Node.js Web开发环境搭建笔记
近期想尝试一下英特尔的基于WebRTC协同通信开发套件,所以须要在本地搭建Node.js Web的开发測试环境. 这里讲的是CentOS 下的搭建方法.使用Windows的小伙伴请參考: <No ...
- Windows 7下Node.js Web开发环境搭建笔记
Node.js是什么? 我们看看百科里怎么说的?JavaScript是一种运行在浏览器的脚本,它简单,轻巧,易于编辑,这种脚本通常用于浏览器的前端编程,但是一位开发者Ryan有一天发现这种前端式的脚本 ...
- mac10.9下eclipse的storm开发环境搭建
--------------------------------------- 博文作者:迦壹 博客地址:http://idoall.org/home.php?mod=space&uid=1& ...
- Python3+PyQt5+PyCharm 桌面GUI开发环境搭建
Python3+PyQt5+PyCharm 桌面GUI开发环境搭建 一.安装python PyQt5所支持的python版本是不低于3.5版本 python3.5以上的版本安装:https://www ...
- 基于Qt Designer和PyQt5的桌面软件开发--环境搭建和入门例子
本文介绍了如何使用技术栈PyCharm+Qt Designer+PyQt5来开发桌面软件,从环境搭建.例子演示到对容易混淆概念的解释.文中用到的全部软件+代码下载链接为:https://url39 ...
- windows下vue+webpack前端开发环境搭建及nginx部署
一.开发环境搭建 1.前端框架一般都依赖nodejs,我们首先要安装node.js.请参考http://www.cnblogs.com/wuac/p/6381819.html. 2.由于许多npm的源 ...
- Windows 环境下vue+webpack前端开发环境搭建
一.开发环境搭建 1.前端框架一般依赖node.js,我们首先要安装node.js. 2.由于许多npm 的源都在国外的地址,安装起来特别慢,所以我们这里利用淘宝的镜像服务器. 安装命令为:npm i ...
- Windows10系统下Hadoop和Hive开发环境搭建填坑指南
前提 笔者目前需要搭建数据平台,发现了Windows系统下,Hadoop和Hive等组件的安装和运行存在大量的坑,而本着有坑必填的目标,笔者还是花了几个晚上的下班时候在多个互联网参考资料的帮助下完成了 ...
- MAC下Android的Eclipse开发环境搭建
原文链接:https://www.cnblogs.com/macro-cheng/archive/2011/09/30/android-001.html 一.Eclipse的下载 到网站:http:/ ...
- ubuntu 14.04下 horizon openstack_dashboard 的开发环境搭建
序:公司要在openstack的基础上,做开发做产品,网上资料也不是很多,很多都是在来回copy,在此做个blog,慢慢更新,推动自己进步. 首先老话题:开发环境的搭建. 一个纯净的ubunt ...
随机推荐
- Charles抓包配置、常见问题和解决方法
1.下载安装charles,官方下载地址:https://www.charlesproxy.com/download/ 如图,下载所对应系统需要的相应版本即可. 2.解压Charles包,双击Char ...
- lombok到底都用来做什么
前言:我使用lombok一般都是用在实体类的外面写个@data省得写getsettostring方法,今天详细了解一下关于lombok的有一些实用技巧 @Cleanup //用于IO流的关闭,给局部变 ...
- 免费使用TasteWP一键搭建线上临时WordPress网站
虽然用宝塔面板或者1Panel面板可以非常快速的搭建一个WordPress网站,但是有时候只想测试下我设计的页面或者开发的主题和插件,又得买服务器,绑定域名,安装程序,搭建起来也过于浪费时间了:再或者 ...
- Jmeter调试取样器
调试取样器(Debug Sampler),生成一个包含JMeter变量或属性值的样本,并且这些值可以在组件[查看结果树]的响应窗格中看到 组件路径:线程组->右键添加->取样器->D ...
- Mysql函数10-IF
IF函数用于判断条件是否成立,成立则执行命令1,不成立则执行命令2. 1.sql查询出一列create_time select create_time from goods where id=65 2 ...
- 第零讲:基础架构:一条SQL查询语句是如何执行的
目录 第零讲:基础架构:一条SQL查询语句是如何执行的 正确的认识事物的方式方法(极为重要): sql语句内部的执行过程:(极为重要) MySQL 可以分为 Server 层和存储引擎层两部分. Se ...
- 【Mybatis-Plus】01 快速上手
[官网快速上手地址] https://mp.baomidou.com/guide/quick-start.html#%E5%88%9D%E5%A7%8B%E5%8C%96%E5%B7%A5%E7%A8 ...
- 代码随想录Day3
203.移除链表元素 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 . 示例 1: 输入:head = [1 ...
- 【转载】 AI与人类首次空战,5:0大胜!40亿次模拟造美国怪兽,谁与争锋? (再次证明深度强化学习路线的正确性)
原文: https://mbd.baidu.com/newspage/data/landingsuper?context=%7B%22nid%22%3A%22news_1003478953355572 ...
- 再用国产操作系统deepin出现拖影现象
问题如题,使用deepin系统后发现不论是网页的拖动.滑动都会出现明显拖影现象,最神奇的是使用爱奇艺的客户端播放器时同样出现拖影现象. 不过这个拖影现象截图还体现不出来这个拖影的效果,估计只有录屏才可 ...