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