背景
隨着.Net Core的崛起,.Net技術棧跨平台已經成為主流趨勢,不管是服務端還是客戶端都在朝着這個目標邁進。其實甚至連最老的.Net Framework技術棧也可以通過開源社區的Mono來實現跨平台開發和運行,這是傳統.Net桌面應用以最小代價進行跨平台移植的選擇之一。
讓Ubuntu時刻保持點亮
默認情況下,Ubuntu會間隔5分鍾之后進入息屏,然后再次進入之后需要輸入密碼,這對我們快速進入研發模式降低了效率。
所以我們需要把這個電源策略重新設置下,讓Ubuntu系統時刻保持點亮狀態。
從右上角進入系統設置
從右上角電源按鈕處進行點擊,可以展開一些功能菜單,其中我們找到Setting設置這個。
找到電源設置
設置屏幕節能策略
我們把這里的的Blank Screen的時間改成Never
雖然這個設置會帶來一些性能代價,但是如果你的研發機器是台式機,這不影響什么。
安裝支撐.Net Framework跨平台運行的Mono環境
添加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
- 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
基於Mono環境小試牛刀
https://linuxize.com/post/how-to-install-mono-on-ubuntu-20-04/
在Ubuntu里面我們先找到記事本(Text Editor)
填寫示例代碼程序
using System;
public class HelloWorld
{
public static void Main(string[] args)
{
Console.WriteLine ("Hello World!");
}
}
二話不說,先把這個最經典的Hello World跑起來。
復制粘貼進去后,保存為hello.cs
文件。
編輯C#程序
csc hello.cs
我們看到,沒有報錯,並且生成了hello.exe
文件。
運行C#程序
mono hello.exe
這時候我們看到,它確實正常輸出了hello world
,算是小試牛刀了。
其實我們也可以像Windows那樣直接運行它,不過在這之前要給它先設置下運行權限
chmod +x hello.exe
然后我們可以很自然的運行起來了
./hello.exe
如果沒有之前運行權限設置,我們看到,直接運行會被拒絕的。
安裝.Net Framework跨平台利器MonoDevelop
什么是MonoDevelop
雖然這已經是一個被作者塵封的項目了,但是回到今天,如果你要在Linux上開發.Net Framework,這仍然是一個不錯的選擇。
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
- 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
等待完成
運行MonoDevelop
安裝完畢之后,我們可以切到Dashboard,找到MonoDevelop
運行它,界面還是磅礴大氣
使用MonoDevelop打開項目
從左上角的File菜單->Open->找到自己的解決方案目錄。
然后選擇Linux Debug模式運行
卸載MonoDevelop
刪除程序
sudo apt remove monodevelop; sudo apt autoremove
刪除包倉庫
sudo rm /etc/apt/sources.list.d/mono-official-vs.list
安裝微軟出品的輕代碼編輯神器Visual Studio Code
基於Snap命令先搜搜VsCode
sudo snap find vscode
牛逼,微軟獨霸了code這個名字,code
就是我們知道的stable穩定版,而code-insiders
是開發者預覽版。
sudo snap install code --classic
接下來通過命令行來安裝它。
它提示我們要帶上--classic
參數。
不出一會就安裝完畢了。
基於Deb包安裝VsCode
運行VsCode
安裝完畢之后,我們可以切到Dashboard,找到Visual Studio Code
成功運行它,並且如往常一樣,我們可以基於它來打開文件或者文件夾。
安裝VsCode插件
這里推薦至少要裝兩個插件:
- Chinese (Simplified) (簡體中文) Language Pack for Visual Studio Code,這個是解決漢化的問題。
- GitLens — Git supercharged,這個可以提供可視化的Git管理體驗。
建立Ubuntu和主系統之間的共享目錄
初步想法,剛才把后續代碼也放到這里面,這樣我可以同時在Ubuntu和主系統中一起來維護它,會不會更好。
開啟Mutipass的共享目錄功能
默認情況下Mutipass這個功能是關閉的,我們需要使用Windows Terminal的管理員模式把它打開。
multipass set local.privileged-mounts=true
設置主系統目錄和Ubuntu目錄之間的映射關系
multipass mount /Users/taylorshi/shareWithCodeSpace UbuntuImpish:/home/taylorshi/shareWithCodeSpace
安裝最流行的源代碼管理組件Git
必須知道
如果你使用較高版本Ubuntu,比如20.04、21.04,其實它已經內置了Git,無需重新安裝。
基於Snap命令先搜搜VsCode
sudo snap find git
從結果中,我們找到一個Ubuntu官方維護的Git工具鏈,沒錯就是它了。
sudo snap install git-ubuntu --classic
等待進度條跑完
基於Apt包管理工具安裝Git
sudo apt update && sudo apt install git
驗證下Git
git --version
配置Git的用戶信息
如果git之前沒有配置過這個,第一次還是要弄的
git config --global user.name "your_name"
git config --global user.email <your_email>
這個配置文件會存儲在~/.gitconfig
位置。
生成或者配置SSH密鑰對
由於這個密鑰會存在在當前賬號下面,這里建議,遠程Ubuntu之后,使用遠程里面的終端來操作,這樣生成的密鑰就在遠程那個對應賬戶下了。
ssh-keygen -t rsa -C "your_email"
-t
指定密鑰類型,默認是rsa,可以省略。-C
設置注釋文字,比如郵箱。-f
指定密鑰文件存儲文件名-b
指定密鑰長度,比如:4096
回車之后會問你一堆問題,比如你要不要自定義名字,自定義密碼,哈哈,通通不用,全部回車搞定即可。
你會看到,生成的密鑰對存儲在/root/.ssh/id_rsa
、/root/.ssh/id_rsa.pub
,其中id_rsa
為私鑰;id_rsa.pub
為公鑰。
我們把公鑰復制出來。
cat id_rsa.pub
把這個公鑰加到你的Github或者Gitlab后台。
驗證密鑰對配置
當我們把密鑰對的公鑰添加到Github或者Gitlab后台之后,我們還可以驗證。
ssh -T $targetGitHost
比如:
ssh -T git@github.com
如果成功呢,它會給你確認下數字指紋,並且給你一個歡迎詞
如果失敗,那就直接把你拒絕了
但是這里有個值得注意的是,你使用git-ssh密鑰對應該是在你之前生成密鑰對的同一個用戶下,比如你root生成的,那就需要在root下使用,不能串,串了可不認。
通過Git拉取代碼
我們可以在當前賬戶目錄下面建立一個代碼空間,比如/home/xxxx/CodeSpace
,這里使用:
mkdir CodeSpace
來創建這個目錄,然后切到這個目錄下面
cd CodeSpace
再拉取項目代碼
git clone $targetGitProjectSSHUrl
在這種模式下,到時候使用Visual Studio Code+GitLens來使用就是很順暢了。
安裝Git的LFS插件
Git大文件存儲(Large File Storage, LFS)將音頻樣本、視頻、數據集和圖形等大文件替換為Git內部的文本指針,同時將文件內容存儲在GitHub.com或GitHub Enterprise等遠程服務器上。
如果是Windows用戶,在Git For Windows中就已經包括了它,但是對Linux來說,需要額外安裝才行。
sudo apt install git-lfs
其實Github默認就送了1GB的Git LFS空間,用完還可以單獨買,從Settings
-Billing and Plans
-Git LFS Data
處可以看到使用和剩余情況。
安裝后使用Git LFS比較簡單,先執行一次初始化
git lfs install
如果項目中已經有文件采用LFS的方式進行托管,那么我們可以通過拉取命令把對應的LFS拉取下來。
git lfs pull
參考
- 通過.NET Framework實現跨平台
- How to Install Mono on Ubuntu 20.04
- Mono Install Stable On Ubuntu
- 玩轉WSL(6)之Git配置
- SSH-keygen用法
- 如何在Ubuntu 20.04上安裝Git
- MonoDevelop,通過其PPA安裝在Ubuntu20.04上
- How to Install MonoDevelop On Ubuntu 20.04
- codesigned mkbundled executable never ends with xmonkeysloveplay
- 使用Mono Runtime Bundle制作安裝包讓C#桌面應用程序脫離net framework
- 如何在macOS平台上利用mkbundle對.Net命令台程序進行打包?
- MonoTouch 二三事(三)mono mkbundle 打包程序的解包支持
- Git-LFS使用