本文地址: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,去外面的世界看看吧。