Rider


聽說你開發.NET還在用VS,小哥哥給你推薦全平台的Rider

 

本文地址:http://www.cnblogs.com/likeli/p/8461010.html

前言

.NET平台的開發一直都只能使用Visual Studio來開發,自從dotnet core 發布后不久,jetbrains 發布了Rider預覽版,到目前為止的正式版2017.3.1。博主都使用過,因為博主的主力開發語言是C#,所以一直以來被捆綁到Windows平台不得動彈許久,無比渴望有一個能夠跨平台玩兒玩兒的IDE,既然core都有了,那就只差一款順手的IDE。

以下發言不是為了對比各個IDE,是為了表述我在使用過程中的心理活動

Visual Studio

這貨大家應該無比熟悉,號稱宇宙第一IDE,在.NET平台下擁有幾乎不可替代的重要性,沒有了這貨,絕大部分人都無法開發了。

好了,功能強大那是重要的,性能也不錯,但是。。。這貨太臃腫了,有木有,我僅僅想要開發個Web API,但是使用VS,我的安裝一個不下10GB的IDE。

Visual Studio For Mac

這是微軟為了拉攏Mac環境開發者的橄欖枝,但是這個橄欖枝還是太嫩了,各種工具殘缺,莫名其妙的BUG。

剛發布的時候,我通過 官方在線安裝 進行安裝,不知道是因為qiang的問題,一直超時,后來通過網友提供的地址直接下載了完整的安裝包,進行安裝的。

當時的第一印象,是:握草,這東西是Bate版吧,太草率了~試用了一陣后,就卸載了,根本無法在正式環境下使用。

最近,再次安裝了一次,還是無法通過官方的在線安裝進行安裝,差評!再次嘗試幾次后,發現BUG少了許多,性能和實用性還是太差太差。

Visual Studio Code

我平時用這個編輯器開發Python腳本和簡單的Go程序,因為打開快速,但是始終覺得,這是一個文本編輯器,而不是一個IDE

Jetbrains Rider

正主來了,我使用Rider從測試預覽版到目前最新的正式版至少有了一年的時間了(Windows、Mac、Ubuntu),經過我這些時間的使用,我也發現了這個IDE很多亮點,著名的VS插件ReSharper可能很多人都用過,此款IDE就是基於ReSharper開發的,所有ReSharper擁有的特性他都有,另外還加入了Jetbrains家族的強大功能,比如Git操作,Unit Test、Docker集成等等。

來來來,我列舉一部分讓大家嘗嘗鮮。先說一下我的使用場景,我一般是做后端API開發還有少量的配套API做的UI,所以偏后端些,但是這個IDE對前端的支持一點也不差。

下載最新版,激活,運行一下:

目前還提供常見的前端模板創建

這是創建的目錄

自定義的格式化方式

我最喜歡的一鍵加入Docker

Jetbrains Rider 更多

只要是Resharper擁有的特性,這個IDE都有,傳送門這是最新版特性的介紹,更多的就去看看,強推!

Jetbrains Rider 根據數據庫查詢結果快速生成DTO類

映像中DTO類的編寫一直是各種麻煩,重復又無意義,特別是作為Web API服務的時候,需要提供無數的DTO映射類!

這個痛點可以借助Rider的groovy腳本來快速解決,如下圖,我寫了兩個groovy的腳本,編寫腳本很簡單,而且可以在腳本中混合使用Java語法~

這兩個腳本 Param-Groovy.cs.groovyproto-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,去外面的世界看看吧。


免責聲明!

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



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