乘风破浪,遇见最佳跨平台跨终端框架.Net Core/.Net生态 - 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

参考

posted @ 2022-04-18 17:33  TaylorShi  阅读(1286)  评论(0编辑  收藏  举报