听说你开发.NET还在用VS,小哥哥给你推荐全平台的Rider
2018-02-25 00:00
423 查看
前言
.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程序,因为打开快速,但是始终觉得,这是一个文本编辑器,而不是一个IDEJetbrains 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
- 蛙蛙推荐:用.net 4.0构建新浪微博开发平台应用
- Java vs C# —— 开发平台--- .Net? J2EE? 谁主沉浮
- .NET跨平台实践:用C#开发Linux守护进程
- .net web 快速开发平台-构思
- 腾讯公司内部信息平台部门招聘.net资深开发工程师和项目经理
- 关于数据库自动化运维平台的设计及开发实现思路 推荐
- 深度解析:J2EE vs .NET开发平台
- .NET跨平台实践:再谈用C#开发Linux守护进程 — 完整篇
- 【收藏】本周ASP.NET英文技术文章推荐[07/29 - 08/04]:VS 2008、.NET 3.5、ASP.NET AJAX、ObjectDataSource、Fiddler、Silverlight、ASP.NET 3.5、ListView、DataPager
- .net web 开发平台- 表单设计器 一(web版)
- .net web 开发平台- 表单设计器 一(web版)
- 基于.net开发平台项目案例集锦
- 用友公司招聘.net开发人员,也欢迎大家推荐,悬赏300元
- 发现一个不错的.NET开发的博客平台,cnopenblog.com
- .Net平台开发的技术规范与项目实践精华总结
- 【Scott推荐】12月8日链接篇: ASP.NET, ASP.NET AJAX, ASP.NET MVC, .NET, VS 2008
- 面向.NET开发人员的Ajax 技术平台策略(二)
- .Net语言 APP开发平台——Smobiler学习日志:在手机应用开发中如何实现跳转地图
- .Net平台开发的技术规范与实践精华总结