本文地址:http://www.cnblogs.com/likeli/p/8461010.htmlhtml
.NET平臺的開發一直都只能使用Visual Studio來開發,自從dotnet core 發佈後不久,jetbrains 發佈了Rider預覽版,到目前爲止的正式版2017.3.1。博主都使用過,由於博主的主力開發語言是C#,因此一直以來被捆綁到Windows平臺不得動彈許久,無比渴望有一個可以跨平臺玩兒玩兒的IDE,既然core都有了,那就只差一款順手的IDE。前端
如下發言不是爲了對比各個IDE,是爲了表述我在使用過程當中的心理活動
linux
這貨你們應該無比熟悉,號稱宇宙第一IDE,在.NET平臺下擁有幾乎不可替代的重要性,沒有了這貨,絕大部分人都沒法開發了。數據庫
好了,功能強大那是重要的,性能也不錯,可是。。。這貨太臃腫了,有木有,我僅僅想要開發個Web API,可是使用VS,個人安裝一個不下10GB的IDE。windows
這是微軟爲了拉攏Mac環境開發者的橄欖枝,可是這個橄欖枝仍是太嫩了,各類工具殘缺,莫名其妙的BUG。visual-studio-code
剛發佈的時候,我經過 官方在線安裝 進行安裝,不知道是由於qiang的問題,一直超時,後來經過網友提供的地址直接下載了完整的安裝包,進行安裝的。後端
當時的第一印象,是:握草,這東西是Bate版吧,太草率了~試用了一陣後,就卸載了,根本沒法在正式環境下使用。app
最近,再次安裝了一次,仍是沒法經過官方的在線安裝進行安裝,差評!再次嘗試幾回後,發現BUG少了許多,性能和實用性仍是太差太差。編輯器
我平時用這個編輯器開發Python腳本和簡單的Go程序,由於打開快速,可是始終以爲,這是一個文本編輯器,而不是一個IDEide
正主來了,我使用Rider從測試預覽版到目前最新的正式版至少有了一年的時間了(Windows、Mac、Ubuntu),通過我這些時間的使用,我也發現了這個IDE不少亮點,著名的VS插件ReSharper
可能不少人都用過,此款IDE就是基於ReSharper開發的,全部ReSharper擁有的特性他都有,另外還加入了Jetbrains家族的強大功能,好比Git操做,Unit Test、Docker集成等等。
來來來,我列舉一部分讓你們嚐嚐鮮。先說一下個人使用場景,我通常是作後端API開發還有少許的配套API作的UI,因此偏後端些,可是這個IDE對前端的支持一點也不差。
下載最新版,激活,運行一下:
目前還提供常見的前端模板建立
這是建立的目錄
自定義的格式化方式
我最喜歡的一鍵加入Docker
只要是Resharper擁有的特性,這個IDE都有,傳送門這是最新版特性的介紹,更多的就去看看,強推!
映像中DTO類的編寫一直是各類麻煩,重複又無心義,特別是做爲Web API服務的時候,須要提供無數的DTO映射類!
這個痛點能夠藉助Rider的groovy腳原本快速解決,以下圖,我寫了兩個groovy的腳本,編寫腳本很簡單,並且能夠在腳本中混合使用Java語法~
這兩個腳本 Param-Groovy.cs.groovy
、proto-Groovy.cs.groovy
都是我用來生成DTO類的,其中proto使用來生成ProtoBuffer的DTO類
腳本的使用方法,在Rider右側的數據庫欄,選擇編輯SQL腳本,簡單的select一些數據後,出現以下的結果欄,切換紅框中的選項到proto-Groovy.cs.groovy,而後選擇一行按Ctrl + C
進行復制,而後在代碼編輯器中Ctrl + V
粘貼出來
這個DTO就生成好了。
依此類推,也能夠經過這種自定義腳本的方式,直接根據整個數據庫生成
POCO類
喲!
一下是兩個腳本的代碼:
Param-Groovy.cs.groovy
SEP = ", " QUOTE = "\'" NEWLINE = System.getProperty("line.separator") def record(columns, dataRow) { columns.eachWithIndex { item, idx -> OUT.append("/// <summary>\n") OUT.append("/// \n") if (dataRow.value(item) != null) OUT.append("/// eg: ${dataRow.value(item)}\n") OUT.append("/// </summary>\n") OUT.append("public string " + captureName(item.name()) + " { set; get; } \n\n") } } ROWS.each { row -> record(COLUMNS, row) } public static String captureName(String name) { return name.substring(0, 1).toUpperCase() + name.substring(1); }
proto-Groovy.cs.groovy
/* * Available context bindings: * COLUMNS List<DataColumn> * ROWS Iterable<DataRow> * OUT { append() } * FORMATTER { format(row, col); formatValue(Object, col) } * TRANSPOSED Boolean * plus ALL_COLUMNS, TABLE, DIALECT * * where: * DataRow { rowNumber(); first(); last(); data(): List<Object>; value(column): Object } * DataColumn { columnNumber(), name() } */ SEP = ", " QUOTE = "\'" NEWLINE = System.getProperty("line.separator") def record(columns, dataRow) { columns.eachWithIndex { item, idx -> OUT.append("/// <summary>\n") OUT.append("/// \n") if (dataRow.value(item) != null) OUT.append("/// eg: ${dataRow.value(item)}\n") OUT.append("/// </summary>\n") OUT.append("[ProtoMember(${idx + 1})] \n") OUT.append("public string " + captureName(item.name()) + " { set; get; } \n\n") } } ROWS.each { row -> record(COLUMNS, row) } public static String captureName(String name) { return name.substring(0, 1).toUpperCase() + name.substring(1); }
Jetbrains家有不少的IDE,你們能夠去看看,開發.NET並不是必定要使用VS,去外面的世界看看吧。