• 乘风破浪,遇见最佳跨平台框架.Net Core之现代Linux桌面应用开发 Ubuntu下.Net Framework研发环境配置指南


    背景

    image

    随着.Net Core的崛起,.Net技术栈跨平台已经成为主流趋势,不管是服务端还是客户端都在朝着这个目标迈进。其实甚至连最老的.Net Framework技术栈也可以通过开源社区的Mono来实现跨平台开发和运行,这是传统.Net桌面应用以最小代价进行跨平台移植的选择之一。

    让Ubuntu时刻保持点亮

    默认情况下,Ubuntu会间隔5分钟之后进入息屏,然后再次进入之后需要输入密码,这对我们快速进入研发模式降低了效率。

    所以我们需要把这个电源策略重新设置下,让Ubuntu系统时刻保持点亮状态。

    从右上角进入系统设置

    从右上角电源按钮处进行点击,可以展开一些功能菜单,其中我们找到Setting设置这个。

    image

    找到电源设置

    image

    设置屏幕节能策略

    我们把这里的的Blank Screen的时间改成Never

    image

    虽然这个设置会带来一些性能代价,但是如果你的研发机器是台式机,这不影响什么。

    安装支撑.Net Framework跨平台运行的Mono环境

    https://www.mono-project.com/download/stable/#download-lin

    添加Mono的包仓库添加到系统中

    • Ubuntu 20.04
    sudo apt install gnupg ca-certificates
    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
    echo "deb https://download.mono-project.com/repo/ubuntu stable-focal main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
    sudo apt update
    

    image

    • Ubuntu 18.04
    sudo apt install gnupg ca-certificates
    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
    echo "deb https://download.mono-project.com/repo/ubuntu stable-bionic main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
    sudo apt update
    
    • Ubuntu 16.04
    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
    sudo apt install apt-transport-https ca-certificates
    echo "deb https://download.mono-project.com/repo/ubuntu stable-xenial main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
    sudo apt update
    
    • UOS/Debian
    sudo apt install apt-transport-https dirmngr gnupg ca-certificates
    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
    echo "deb https://download.mono-project.com/repo/debian stable-buster main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
    sudo apt update
    

    命令行安装Mono

    • 基础安装
    sudo apt install mono-devel
    
    • 完整安装(推荐)
    sudo apt install mono-complete
    

    mono-complete是一个元包,它安装了Mono运行时、开发工具和所有库。

    验证安装

    mono --version
    

    image

    基于Mono环境小试牛刀

    https://linuxize.com/post/how-to-install-mono-on-ubuntu-20-04/

    在Ubuntu里面我们先找到记事本(Text Editor)

    image

    填写示例代码程序

    using System;
    
    public class HelloWorld
    {
        public static void Main(string[] args)
        {
            Console.WriteLine ("Hello World!");
        }
    }
    

    二话不说,先把这个最经典的Hello World跑起来。

    复制粘贴进去后,保存为hello.cs文件。

    image

    image

    编辑C#程序

    csc hello.cs
    

    image

    我们看到,没有报错,并且生成了hello.exe文件。

    运行C#程序

    mono hello.exe
    

    image

    这时候我们看到,它确实正常输出了hello world,算是小试牛刀了。

    其实我们也可以像Windows那样直接运行它,不过在这之前要给它先设置下运行权限

    chmod +x hello.exe
    

    然后我们可以很自然的运行起来了

    ./hello.exe
    

    image

    如果没有之前运行权限设置,我们看到,直接运行会被拒绝的。

    安装.Net Framework跨平台利器MonoDevelop

    什么是MonoDevelop

    虽然这已经是一个被作者尘封的项目了,但是回到今天,如果你要在Linux上开发.Net Framework,这仍然是一个不错的选择。

    image

    MonoDevelop是一个主要为C#和其他.NET语言设计的免费和开放的集成开发环境,该开发环境于2003年开始开发。MonoDevelop最初是对SharpDevelop的Gtk的改编,但后来被开发以满足Mono项目开发人员的需求。

    从2.2版开始,MonoDevelop已经完全支持Gnu/Linux、Windows和Mac,因此是一个真正的多平台IDE。如果您对在Gnu/Linux中以快速高效的方式使用.Net编程感兴趣,用户可以通过PPA在Ubuntu中安装MonoDevelop。

    MonoDevelop使开发人员能够在Gnu/Linux、Windows和MacOS X上快速编写Web和桌面应用程序。它还使开发人员可以轻松地将使用Visual Studio构建的.NET应用程序迁移到Gnu/Linux和MacOS,同时保持单一所有平台的代码库。此IDE是在GNU通用公共许可证下分发的免费软件

    https://www.monodevelop.com/download/#fndtn-download-lin-ubuntu

    添加Mono的包仓库添加到系统中

    • Ubuntu 18.04/20.04/21.04
    sudo apt install apt-transport-https dirmngr
    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
    echo "deb https://download.mono-project.com/repo/ubuntu vs-bionic main" | sudo tee /etc/apt/sources.list.d/mono-official-vs.list
    sudo apt update
    

    image

    image

    image

    image

    • Ubuntu 16.04
    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
    sudo apt install apt-transport-https
    echo "deb https://download.mono-project.com/repo/ubuntu vs-xenial main" | sudo tee /etc/apt/sources.list.d/mono-official-vs.list
    sudo apt update
    
    • Ubuntu 14.04
    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
    sudo apt install apt-transport-https
    echo "deb https://download.mono-project.com/repo/ubuntu vs-trusty main" | sudo tee /etc/apt/sources.list.d/mono-official-vs.list
    sudo apt update
    

    命令行安装MonoDevelop

    sudo apt-get install monodevelop
    

    image

    等待完成

    image

    运行MonoDevelop

    安装完毕之后,我们可以切到Dashboard,找到MonoDevelop

    image

    运行它,界面还是磅礴大气

    image

    使用MonoDevelop打开项目

    从左上角的File菜单->Open->找到自己的解决方案目录。

    image

    然后选择Linux Debug模式运行

    image

    卸载MonoDevelop

    删除程序

    sudo apt remove monodevelop; sudo apt autoremove
    

    删除包仓库

    sudo rm /etc/apt/sources.list.d/mono-official-vs.list
    

    安装微软出品的轻代码编辑神器Visual Studio Code

    基于Snap命令先搜搜VsCode

    https://snapcraft.io/code

    sudo snap find vscode
    

    image

    牛逼,微软独霸了code这个名字,code就是我们知道的stable稳定版,而code-insiders是开发者预览版。

    sudo snap install code --classic
    

    接下来通过命令行来安装它。

    image

    它提示我们要带上--classic参数。

    image

    不出一会就安装完毕了。

    基于Deb包安装VsCode

    https://code.visualstudio.com/#alt-downloads

    image

    运行VsCode

    安装完毕之后,我们可以切到Dashboard,找到Visual Studio Code

    image

    成功运行它,并且如往常一样,我们可以基于它来打开文件或者文件夹。

    image

    安装VsCode插件

    这里推荐至少要装两个插件:

    • Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code,这个是解决汉化的问题。

    image

    • GitLens — Git supercharged,这个可以提供可视化的Git管理体验。

    image

    建立Ubuntu和主系统之间的共享目录

    初步想法,刚才把后续代码也放到这里面,这样我可以同时在Ubuntu和主系统中一起来维护它,会不会更好。

    开启Mutipass的共享目录功能

    默认情况下Mutipass这个功能是关闭的,我们需要使用Windows Terminal的管理员模式把它打开。

    multipass set local.privileged-mounts=true
    

    image

    设置主系统目录和Ubuntu目录之间的映射关系

    multipass mount /Users/taylorshi/shareWithCodeSpace UbuntuImpish:/home/taylorshi/shareWithCodeSpace
    

    安装最流行的源代码管理组件Git

    必须知道

    如果你使用较高版本Ubuntu,比如20.04、21.04,其实它已经内置了Git,无需重新安装。

    image

    基于Snap命令先搜搜VsCode

    https://snapcraft.io/git-ubuntu

    sudo snap find git
    

    image

    从结果中,我们找到一个Ubuntu官方维护的Git工具链,没错就是它了。

    sudo snap install git-ubuntu --classic
    

    等待进度条跑完

    image

    基于Apt包管理工具安装Git

    sudo apt update && sudo apt install git
    

    image

    验证下Git

    git --version
    

    image

    配置Git的用户信息

    如果git之前没有配置过这个,第一次还是要弄的

    git config --global user.name "your_name"
    
    git config --global user.email <your_email>
    

    image

    这个配置文件会存储在~/.gitconfig位置。

    生成或者配置SSH密钥对

    由于这个密钥会存在在当前账号下面,这里建议,远程Ubuntu之后,使用远程里面的终端来操作,这样生成的密钥就在远程那个对应账户下了。

    ssh-keygen -t rsa -C "your_email"
    
    • -t 指定密钥类型,默认是rsa,可以省略。
    • -C 设置注释文字,比如邮箱。
    • -f 指定密钥文件存储文件名
    • -b 指定密钥长度,比如:4096

    回车之后会问你一堆问题,比如你要不要自定义名字,自定义密码,哈哈,通通不用,全部回车搞定即可。

    image

    你会看到,生成的密钥对存储在/root/.ssh/id_rsa/root/.ssh/id_rsa.pub,其中id_rsa为私钥;id_rsa.pub为公钥。

    image

    我们把公钥复制出来。

    cat id_rsa.pub
    

    image

    把这个公钥加到你的Github或者Gitlab后台。

    image

    验证密钥对配置

    当我们把密钥对的公钥添加到Github或者Gitlab后台之后,我们还可以验证。

    ssh -T $targetGitHost
    

    比如:

    ssh -T git@github.com
    

    如果成功呢,它会给你确认下数字指纹,并且给你一个欢迎词

    image

    如果失败,那就直接把你拒绝了

    image

    但是这里有个值得注意的是,你使用git-ssh密钥对应该是在你之前生成密钥对的同一个用户下,比如你root生成的,那就需要在root下使用,不能串,串了可不认。

    通过Git拉取代码

    我们可以在当前账户目录下面建立一个代码空间,比如/home/xxxx/CodeSpace,这里使用:

    mkdir CodeSpace
    

    来创建这个目录,然后切到这个目录下面

    cd CodeSpace
    

    再拉取项目代码

    git clone $targetGitProjectSSHUrl
    

    image

    在这种模式下,到时候使用Visual Studio Code+GitLens来使用就是很顺畅了。

    image

    安装Git的LFS插件

    https://git-lfs.github.com

    Git大文件存储(Large File Storage, LFS)将音频样本、视频、数据集和图形等大文件替换为Git内部的文本指针,同时将文件内容存储在GitHub.com或GitHub Enterprise等远程服务器上。

    如果是Windows用户,在Git For Windows中就已经包括了它,但是对Linux来说,需要额外安装才行。

    sudo apt install git-lfs
    

    image

    其实Github默认就送了1GB的Git LFS空间,用完还可以单独买,从Settings-Billing and Plans-Git LFS Data处可以看到使用和剩余情况。

    image

    安装后使用Git LFS比较简单,先执行一次初始化

    git lfs install
    

    image

    如果项目中已经有文件采用LFS的方式进行托管,那么我们可以通过拉取命令把对应的LFS拉取下来。

    git lfs pull
    

    image

    参考

  • 相关阅读:
    SQL索引是什么?索引的作用是什么?索引的优点是什么?索引的缺点是什么?索引的分类?什么情况下该创建索引?
    Eclipse中JSP生成的class文件去了哪里?
    Jboss 遇到的问题 :org.jboss.tools.vpe.xulrunner.XulRunnerBundleNotFoundException: Bundle org.mozilla.xulrunner.win32.win32.x86_64 is not found.
    Java框架之Hibernate实战篇
    《从0开始学架构》学习笔记(一)
    JavaWeb——Servlet(详细笔记)
    用Eclipse+Maven+Jetty构建Java Web开发环境(详细笔记)
    Jetty 安装、启动与项目部署
    快速排序相关(学习笔记)
    Java中对象的比较(学习笔记)
  • 原文地址:https://www.cnblogs.com/taylorshi/p/16160780.html
Copyright © 2020-2023  润新知