在Linux开发.NET——拜拜了Win10
我是一個有多年開發(fā)經(jīng)驗的.NET程序員。最近,我決定使用*NIX系統(tǒng)來開發(fā).NET程序,雖然看起來有些激進(jìn),但是我可以說,這是我做過最好的決定了。
事情的起因是這樣的,上周星期五(十月14日),我正在辦公室處理一些東西,突然Windows彈出一個窗口說:“20分鐘之后我們將更新Windows,在這之前你什么都做不了。”
15分鐘之后,我的筆記本已經(jīng)關(guān)機了。然后過了兩三分鐘,就開始了長達(dá)一個小時的更新過程,浪費了我的工作時間。所以,去你的Windows吧。
然而,這并不是純粹因為一時的感情用事做出的決定。老實說,當(dāng)初我是想買臺MacBook來著,但是我們的項目需要做觸屏產(chǎn)品,所以我就買了聯(lián)想的Yoga 900。不過我想也許蘋果有一天會出一臺帶觸屏的筆記本,然后說這是筆記本的“革命”,這又是另外一個故事了。
開發(fā)過兩個涉及到.NET Core的項目之后,我工作用的筆記本基本上和所有微軟系統(tǒng)的東西絕緣了,然后安裝了了Linux Mint。
為什么是Mint呢?不知道,網(wǎng)上有人推薦說,如果你是Linux新手的話(我不是純粹的新手,在美好的大學(xué)時代,我還學(xué)了幾個命令),應(yīng)該使用Mint而不是Ubuntu(這里別太較真了兄弟),所以我就用了Mint。
安裝新系統(tǒng)之前,我必須關(guān)閉筆記本的UEFI,重新分區(qū),格式化。對我來說需要花些時間搞明白這些操作,不過還不是太難。
安裝很快,過了幾分鐘,我就可以登錄我的新系統(tǒng)了。
接下來我的首要任務(wù)是安裝.NET Core框架,非常簡單,沒什么好說的。但是NET Core preview library有些依賴存在問題,我Google解決了這個問題。然后我的框架就可以工作了,我準(zhǔn)備build一個應(yīng)用。它“工作”了,加引號是因為引用System.Drawing的project.json出現(xiàn)了問題。
雖然程序可以正確運行,但是它拋出了找不到gdiplus.dll異常,情理之中,因為這是Windows組件,在Linux中找不到是正常的。
但是這里我想表達(dá)的意思是,這里.NET Core應(yīng)用并沒有崩潰。想象一下我把它部署到Linux服務(wù)器會發(fā)生什么——看起來一切正常,但是實際上卻不是。這里要注意一下。
安裝了一些必要的服務(wù)和應(yīng)用(如Git, MongoDB, Redis, Slack, Skype等)之后。我要做出一個決定了:用什么來寫代碼。我是Visual Studio Code的忠實粉絲——我寫JavaScript幾乎全靠它(以及除了寫C#之外所有的工作),但是,如果要保證生產(chǎn)率的話,我覺得還是Resharper比較好。
還有個叫做OmniSharp(支持Atom,Brackets,Sublime甚至Vim),它也兼容VS Code。但這畢竟不是Visual Studio + Resharper,也基本滿足我的需求了,比如通過文件查找,通過method/type查找,重命名,跳轉(zhuǎn)到定義處或顯示引用等。
我也嘗試了Project Rider項目,但是運氣不太好。項目可以載入,但是內(nèi)置的Resharper有錯誤,我不能build我的項目(可以寫代碼,不能工作)。
不過我相信如果JetBrains修復(fù)了這些bug的話,這會是.NET最棒的跨平臺IDE(迫不及待了!)最后一點,沒有什么是一個bash腳本解決不了的,所以項目的自動化(運行、測試等)不是問題。
最后要講的東西是Docker。之前我也計劃過學(xué)習(xí)Docker,但是因為沒有地方用到,所以就不了了之了。現(xiàn)在,我們正在使用Microservices + CQRS模式開發(fā),所以用Docker的鏡像和容器應(yīng)該是個不錯的主意。
這也是在軟件開發(fā)中使用Linux而不是Windows的一個優(yōu)點。Linux是運行Docker的純天然容器,如果它能在我的機器上運行,我?guī)缀?00%地肯定它能在遠(yuǎn)程服務(wù)器上運行。
我也可以在Windows 10上安裝Docker,但是需要VirtualBox的HyperV。上次我試圖編譯它的時候,因為系統(tǒng)變量$PATH的問題遇到了錯誤。所以在Windows中使用Docker還是挺麻煩的。
對了,我忘了提為什么我的應(yīng)用不能在Linux中運行了——因為這是在Windows上編譯的,aurelia.json文件的路徑以”\”結(jié)尾,必須將其替換成”/”才能工作(在Windows中也有同樣的問題。)
我已經(jīng)無法形容*NIX系統(tǒng)的bash有多么棒了,用腳本設(shè)置NGINX的SSL、簽名、反向代理和重定向簡直易如反掌。
最后,我不是說Windows不適合做軟件開發(fā)。比如,[Visual Studio]在短期內(nèi)可能不會有競爭對手。我的觀點是,如果你不是必須使用某個非跨平臺系統(tǒng)(通常都是指Windows)的話,也許你可以試一下其它環(huán)境。嘗試新的東西,對強化技術(shù)和開拓視野來說總是好的。
原文鏈接:http://geek.csdn.net/news/detail/108540
.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關(guān)注
總結(jié)
以上是生活随笔為你收集整理的在Linux开发.NET——拜拜了Win10的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2016年10月20日 .NET Cor
- 下一篇: .NET Core 1.1 Previe