听说你开发.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,去外面的世界看看吧。

Rider的更多相关文章

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

    本文地址:http://www.cnblogs.com/likeli/p/8461010.html 前言 .NET平台的开发一直都只能使用Visual Studio来开发,自从dotnet core ...

  2. JetBrains Rider 破解 (ideaIU等等开发工具都通用)2018-02-27

    贴一下Rider下载地址:(下载不了可以用百度云离线下载) Win:https://download.jetbrains.com/resharper/JetBrains.Rider-2017.3.1. ...

  3. .Net新利器Rider的破解安装与使用

    准备 介绍 Rider 是 JetBrains 提供的一款用于 .Net 开发的 IDE,相对于 VS,它显得更加轻量(才 500m 左右),并且不管是提示功能还是流畅度都不逊色于 VS 且某方面可能 ...

  4. Linux下尝鲜IDE Rider .NET又一开发利器

    RiderRS 扯淡:很多人说:jetbrains出品,必属精品,jetbrains确实出了不少好东西,但是他的产品总感觉越用越慢,我的小Y430P高配版也倍感压力,内存占用率高. Multiple ...

  5. 用Rider写一个有IOC容器Autofac的.net core的程序

    一:Autofac是一个和Java里的Spring IOC容器一样的东西,不过它确实没有Spring里的那么方便,主要是在于它没有提供足够的Api和扫描方式等等,不过优点是它比Spring要快很多,而 ...

  6. JetBrains Rider 2018.1 汉化

    之前说过了JetBrains系列的破解(最新版本也可以破解)https://www.cnblogs.com/dunitian/p/8478252.html 不少人对全英文的开发环境还是不太适应,那就来 ...

  7. 日常英语---十一、MapleStory/Monsters/Level 201-210(Dark Demon Eagle Rider)

    日常英语---十一.MapleStory/Monsters/Level 201-210(Dark Demon Eagle Rider) 一.总结 一句话总结:骑着鹰的快速飞行的恶魔,进入地图后跟着你. ...

  8. Unity使用Rider作为IDE的体验

    Rider 2017.2.1比较完整的支持Unity开发. 通过添加插件代码实现了直接选择Rider作为编辑器. 支持调试. 支持双击跳转代码. Alt+Insert可以插入Unity event函数 ...

  9. 使用Rider写一个C#的Hello World程序

    1. 安装Rider 首先到Jetbrains官网下载Rider:https://www.jetbrains.com/rider/ 然后到IntelliJ IDEA 注册码获得注册码. 2. 安装do ...

  10. c# 跨平台ide JetBrains Rider

    https://www.jetbrains.com/rider/ et框架 调试hotfix用的,说是vs调试容易崩溃 破解方法 https://zhile.io/2018/08/18/jetbrai ...

随机推荐

  1. 改变querystring值,然后重定向

    原文发布时间为:2009-11-13 -- 来源于本人的百度文章 [由搬家工具导入] 本页面改变querystring值,然后重定向 本页面,避免出现重复querystring。。 如避免出现 www ...

  2. Docker(六):容器

    一.启动容器 启动容器有两种方式,一种是基于镜像新建一个容器并启动,另一个是将一个在终止状态的容器重新启动,因为Docker的容器实在是太轻量了,很多用户都可以随时删除和新创建容器. 新建并启动 $s ...

  3. 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---11

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  4. javascript 动态添加城市

    匿名函数的使用 createTextnode 创建文本 createElement   创建元素 appendChild     将文本或元素追加 <!DOCTYPE html> < ...

  5. 洛谷 P1056 排座椅【贪心/结构体排序】

    题目描述 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的D对同学上课时会交头接耳.同学 ...

  6. HDU 5242 Game(树上贪心)

    题目链接 Game 题目的意思很简单, 就是要找一棵树权值最大等等前K条链. 在本题中,走的次数等于min(叶子结点个数,k) tree[i].sum意为从i号结点出发走到某个叶子结点能得到的最大总价 ...

  7. 构建更好的HashMap

    在7月份的那期 Java理论与实践(“并发集合类”)中,我们简单地回顾了可伸缩性的瓶颈,并讨论了怎么用共享数据结构的方法获得更高的并发性和吞吐量.有时候学习的最好方法是分析专家的成果,所以这个月我们将 ...

  8. AbstractFactory

    定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类. (1)定义产品接口 /** * 第一种系列的产品 * @author Administrator * */ interfa ...

  9. List与set

    1,List与set的区别? List:元素是有序的,元素可以重复,因为集合体系有索引 set:元素是无序的,元素不可以重复,集合体系没有索引 2,list里面特有的方法: 在制定的位置添加元素add ...

  10. RxJava Android(RxAndroid) 开发全家桶

    RxJava 在 Android 应用开发中越来越流行,但是由于其门槛稍高,初次使用不免遇到很多问题,例如在 RxJava 常见的错误用法 和 不该使用 RxJava 的一些情况 中所描述的情况.为了 ...