日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

听说你开发.NET还在用VS,小哥哥给你推荐全平台的Rider

發布時間:2023/12/4 asp.net 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 听说你开发.NET还在用VS,小哥哥给你推荐全平台的Rider 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

.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.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,去外面的世界看看吧。

原文地址:?https://www.cnblogs.com/likeli/p/8461010.html


.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com

總結

以上是生活随笔為你收集整理的听说你开发.NET还在用VS,小哥哥给你推荐全平台的Rider的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。