乘風破浪,遇見最佳跨平台跨終端框架.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

參考


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM