听说你开发.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.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,去外面的世界看看吧。
听说你开发.NET还在用VS,小哥哥给你推荐全平台的Rider的更多相关文章
- SQL开发中容易忽视的一些小地方(一)
原文:SQL开发中容易忽视的一些小地方(一) 写此系列文章缘由: 做开发三年来(B/S),发现基于web 架构的项目技术主要分两大方面: 第一:C#,它是程序的基础,也可是其它开发语言,没有开发语言也 ...
- SQL开发中容易忽视的一些小地方(二)
原文:SQL开发中容易忽视的一些小地方(二) 目的:继上一篇:SQL开发中容易忽视的一些小地方(一) 总结SQL中的null用法后,本文我将说说表联接查询. 为了说明问题,我创建了两个表,分别是学生信 ...
- SQL开发中容易忽视的一些小地方(六)
原文:SQL开发中容易忽视的一些小地方(六) 本文主旨:条件列上的索引对数据库delete操作的影响. 事由:今天在博客园北京俱乐部MSN群中和网友讨论了关于索引对delete的影响问题,事后感觉非常 ...
- SQL开发中容易忽视的一些小地方(四)
原文:SQL开发中容易忽视的一些小地方(四) 本篇我想针对网上一些对于非聚集索引使用场合的某些说法进行一些更正. 下面引用下MSDN对于非聚集索引结构的描述. 非聚集索引结构: 1:非聚集索引与聚集索 ...
- DevStore开发人员服务有奖征文:小谈新浪微博开放平台
DevStore开发人员服务有奖征文:小谈新浪微博开放平台 笔者接入新浪微博开发平台也有一段时间了,对整个平台的接入也算比較熟悉,新浪提供了统一的API接口,能够让开发人员更方便的使用API来实现自己 ...
- 第二篇 :微信公众平台开发实战Java版之开启开发者模式,接入微信公众平台开发
第一部分:微信公众号对接的基本介绍 一.填写服务器配置信息的介绍 登录微信公众平台官网后,进入到公众平台后台管理页面. 选择 公众号基本设置->基本配置 ,点击“修改配置”按钮,填写服务器地址( ...
- SQL开发中容易忽视的一些小地方(五)
原文:SQL开发中容易忽视的一些小地方(五) 背景: 索引分类:众所周知,索引分为聚集索引和非聚集索引. 索引优点:加速数据查询. 问题:然而我们真的清楚索引的应用吗?你写的查询语句是否能充分应用上索 ...
- SQL开发中容易忽视的一些小地方( 三)
原文:SQL开发中容易忽视的一些小地方( 三) 目的:这篇文章我想说说我在工作中关于in和union all 的用法. 索引定义 : 微软的SQL SERVER提供了两种索引:聚集索引(cluster ...
- 小程序开发运营必看:微信小程序平台运营规范
一.原则及相关说明 微信最核心的价值,就是连接——提供一对一.一对多和多对多的连接方式,从而实现人与人.人与智能终端.人与社交化娱乐.人与硬件设备的连接,同时连接服务.资讯.商业. 微信团队一 ...
随机推荐
- Spring注解依赖注入的三种方式的优缺点以及优先选择
当我们在使用依赖注入的时候,通常有三种方式: 1.通过构造器来注入: 2.通过setter方法来注入: 3.通过filed变量来注入: 那么他们有什么区别吗?应该选择哪种方式更好? 三种方式的区别小结 ...
- 立即掌握SSM框架的要诀
ssm框架的总结: 1. 首先是POM.xml 文件的配置,他的作用主要是添加依懒的关系和自动下载相关的包. 2.对jdbc.properties进行配置 ,作用就是连接你的数据库的配置. 3.对接着 ...
- 利用H5构建地图和获取定位地点
地图与地理定位 定位在大部分项目中都需要实现,如何实现主要有如下的几种方法 H5定位 在HTML5中navigator有很强大的功能,其中就有定位的方法 navigator.geolocation.g ...
- OKMX6Q在ltib生成的rootfs基础上制作带QT库的根文件系统
ltib每次执行后会在其目录下生成rootfs目录,并以其为基础生成rootfs.ext2.gz文件,而litb自带的QT库又太老,所以想到按照飞凌的<OKMX6X-S2-Qt4.8.5移植手册 ...
- 引导图滤波(Guided Image Filtering)原理以及OpenCV实现
引导图是一种自适应权重滤波器,能够在平滑图像的同时起到保持边界的作用,具体公式推导请查阅原文献<Guided Image Filtering>.这里只说一下自适应权重原理.C++实现灰度图 ...
- EditText之边框颜色
EditText的自带属性里没有设置边框颜色的 有俩种方式可以达到效果 一种是网上比较推崇的用图作背景,另一种则是自绘 图作背景的: 首先重新定义一个style.在values文件夹下新建一个styl ...
- Cannot complete the install because one or more required items could not be found
弄了一天的subclipse也没装上,郁闷~~~~~~~~ 无论采用本地安装还是站点安装都不行,在安装的时候显示错误: Cannot complete the install because one ...
- [知了堂学习笔记]_Java代码实现MySQL数据库的备份与还原
通常在MySQL数据库的备份和恢复的时候,多是采用在cmd中执行mysql命令来实现. 例如: mysqldump -h127.0.0.1 -uroot -ppass test > d:/tes ...
- python基础7之python3的内置函数
官方介绍: python3:https://docs.python.org/3/library/functions.html?highlight=built#ascii python2:https:/ ...
- 2017-07-04(sudo wc sort)
sudo 作用 root把本来只能超级用户执行的命令,赋予普通用户执行. 添加 运行visudo命令,在文件底部添加信息即可! sudo -l 查看用户可以运行的命令 use1 ALL=(ALL) ...