1. 首页
  2. 文章列表
  3. VisualStudio神级插件Resharper基础入门到入坑使用教程

现在总算是给公司的开发团队全面普及Resharper这个强大的VS神级插件了,可是很多人也就只用到了他的一些基本功能,可能算是大材小用了吧,就在最近两天,在跟一同事进行结对编程的时候,看到同事也安装了Resharper,但是在写代码的时候,很多功能都没用到,于是我就在旁边提醒了他一些Resharper的快捷操作,所以还是给大家全面普及一下Resharper的基本使用吧,掌握了这些操作与技巧,让你真正的入坑到Resharper的乐趣当中,无法自拔。

还在上一家公司的时候,整个开发团队就我一个人在用Resharper,想想我这网站初期也是依靠Resharper推广起来的吧,所以有必要将Resharper继续推广起来。在此,给jetbrains公司说一声:我对不起你!

超长文章与多图预警!

Resharper下载和破解

企业用户请支持正版!学生用户可凭edu邮箱申请教育版授权

https://masuit.com/20

Resharper使用技巧+性能优化

本文作为《Resharper的使用技巧大全+Resharper性能优化》的补充教程,之前写的太简略了,这次来个详细的。

Reshaper是什么

面对这样一个问题:为什么.net能够比java更加快速的完成开发?恐怕最大的优势在于Microsoft提供了一个宇宙级的IDE VisualStudio。它的强大在于适用于各个层次的开发人员。当你还是一只小小鸟的时候,可以学会drag&drop,当你开始写代码的时候,你会发现设计器生成的代码是多么愚蠢和臃肿。当你自己能够写出干净的代码时,可能再也不想切换到设计器中去了(切换/F7)。我相信我们中的大部分人,即使是最资深的Windows开发人员,用VS写代码比用记事本的效率要高很多,因为我们毕竟需要IDE的帮助以提高我们的生产力。但是在那个没有Resharper的年代里,你的生产力顶多停留在两个轮子的时代,另两个轮子,只有在你熟悉了Resharper以后才能转动起来。

Resharper能带给你的效率提升如此之高,以至于在我订阅的所有.net专家的blog里面,所有的人都在关注它。要知道他们都不是一般的coder,大多数是CTO或者技术总监。当我四年前开始使用Resharper时,想要搜到一些中文的介绍,或者是经验性的文章却十分困难。大多数人似乎不关心它的存在。网络上充斥着因为安装Resharper而拖慢系统,导致VS不稳定,机器响应速度下降,VS启动速度下降等等的论调。幸运的是,这些在我这里都没有遇到,也许是因为8GB大内存+SSD的缘故,反正devenv.exe所占的200~300m内存并没有使我感觉机器在变慢,而且我的VS几乎是一直运行中,没有一会关闭一会打开的时候,所以我只需要忍受Resharper在加载时的半分钟初始化一次就够了。相比于它能带给你的效率提升,这些问题在我看来都是微不足道的(一家之言)。 

懒得勤快的博客_全栈开发者_互联网分享精神

如果你在VS环境下写代码时几乎不用快捷键,那我觉得你没有必要往下看了。因为Resharper是通过快捷键来提升你的效率的。但是相信我,如果你曾经在星际中一遍一遍被人虐的话,你应该能体会到快捷键带来多么大的变化。 

即便是那些整天攻击 .NET 和 C# 的人,也常常不得不承认 Visual Studio 确实是个够强大的 IDE,除非他认为更少的 IDE 功能和命令行调试才是更强大的。可是,即便如此,仍阻止不了一些第三方的个人和厂商开发出一些插件来让 VS 变得更强大。Reshaper 就是这样一个 VS 插件,它提供了一些在 VS 基础上更方便于程序员使用的功能,当然,劣势是:它耗掉了更多的内存,有可能让你不够强大的开发机变得更慢。所以,Resharper仍然是推荐有大内存+SSD的玩家使用(貌似目前的机器这都是标配了)

ReSharper可以在安装后立即使用。当您在安装ReSharper后运行Visual Studio时,您需要指定您的许可证信息,然后开始。对于新用户,Resharper提供了30天免费全功能试用。在此期间,你可以享受产品的全部功能,并决定它是否适合你的需要。

ReSharper是一个以快捷键为主的产品。它的大多数操作都有默认的键盘快捷方式,您可以为其任何命令分配自定义快捷方式。

当ReSharper准备就绪时,首次启动它会提示您从两个默认的快捷键方案中选择一个(【Visual Studio快捷键方案VSKeymap】和【Resharper 2.x/IntelliJ IDEA快捷键方案IDEAKeymap】):

懒得勤快的博客_全栈开发者_互联网分享精神

您可以更改所选方案,ReSharper->Options->Environment|Keyboard&Menus,详细见下文。

接着,在 VS 的菜单里,会多出个 Resharper选项。 可以按 Alt+R 打开这个菜单,也可以鼠标,随便你以那种方式啦...

懒得勤快的博客_全栈开发者_互联网分享精神

懒得勤快的博客_全栈开发者_互联网分享精神

概括

在Visual Studio中安装ReSharper后,您将看到以下更改:

菜单和窗口的改变

Visual Studio菜单栏出现Resharper,包含了所有的命令(除了仅在上下文中可用的命令)。

特定命令的工具窗口。所有工具窗口可用Resharper->Windows菜单调用。

懒得勤快的博客_全栈开发者_互联网分享精神

ReSharper的命令可在编辑器,解决方案资源管理器和其他Visual Studio窗口的上下文菜单中使用。
请注意,默认情况下ReSharper会覆盖Visual Studio命令(例如重构和导航命令)。如果要保留Visual Studio原始菜单项,你需要清除隐藏覆盖Visual Studio的菜单项复选框。详细操作见下文。

在ReSharper的配置页中,可以禁用和启用Resharper。通常,我们不需要这样做。但是,如果在大型解决方案中遇到性能问题,则禁用Resharper可能有助于提高性能。

在Visual Studio中,我们也可以绑定一个快捷方式到ReSharper_ToggleSuspended命令,并使用此快捷方式来快速暂停/继续Resharper功能。

编辑器和状态栏中的更改:

懒得勤快的博客_全栈开发者_互联网分享精神

1.状态指示灯可以帮助您立即看到当前的文件是否有错误或警告。

2.非导入类型修复弹出窗口。按Alt+Enter或点击弹出窗口,Resharper的将添加文件中所有类型缺少的指令。

3.低优先级代码问题(这种情况下,未使用的公共成员相关建议)显示为灰色。

4.中等优先级代码问题(这种情况下,符号名称不符合命名风格)以蓝色的下划线突出显示。

5.对应于建议问题(3)的标记被显示在标记条上。

6.对应于错误问题(8)的标记显示在标记栏上。

7.一个?动作指示灯?, 左侧ReSharper的建议插入位置。

8.高优先级代码问题(未解决的符号相关的错误,不正确的返回类型)用红色文本和红色的下划线突出显示。

9.警告问题(4)相对应的标记显示在标记栏上。

10.动作列表,其通过按Alt+Enter或点击动作指示器(7)打开,包含快速修复列表。

11.状态栏中会显示问题的简短说明。您还可以查看代码问题的描述,将鼠标悬停在突出显示问题标记上(5,6,9)

12.如果解决方案范围的分析已启用,ReSharper将让你看到更多的代码问题。在此示例中,它将检测未使用的公用成员(3),并通知有关您解决方案的其他文件中的错误。您可以单击解决方案范围的分析图标来探索检测到的问题。你也可以在快速启动框中找到并执行ReSharper的命令:

懒得勤快的博客_全栈开发者_互联网分享精神

简单上手

你可以简单地这样体验一下:Alt+R,N,回车,就可以在当前项目中添加一个类,还记得以前你是怎么做的吗?在解决方案资源管理器中选中一个项目,然后右键,在长长的弹出菜单中选择:添加——类,如果你的电脑够慢的话,在3秒钟之后才会弹出一个对话框来问你文件名。 
另一种方式是:看到竖直滚动条了吗?在它的右边多出一个边框来,上方是一个“绿色/黄色/红色”的方框,而边框上会出现一道一道红的橙的横杠。什么意思:当红杠出现时,表明你的代码在那个位置出现了错误,如果是橙杠,表明那是一个警告,多半是没有检测null值或者声明后未使用之类。
如果当前文档的所有错误和警告都得到了适当的处理,则不会再出现横杠,而最顶上的方框也会变成绿色;
如果没有错误但有警告,则是黄色,这时编译可以通过;
如果那个方框是红色,则表示有编译通不过的错误,这时你应该通过点击红杠,去修改您的代码。如果你即使编译,也会报错并无法生成。这样做使你在写代码时就能及时得发现你的错误,而不需要等到编译时。这样做也使你的效率得到了提高。因为编译至少要耗去您半分钟的时间,并且强烈的读写您的硬盘,特别在你的硬盘转速慢时,比如笔记本上,这一过程是那么的令人心痛。 

还有就是Resharper的快捷键了。右键菜单当然也有很多的功能,但是那太弱智了,太慢了。我们需要的是专业,我们用的工具定位不是打毛衣的大妈,而是开发的专业人员,如果你连快捷键都无法掌握,那真的得对你的开发技巧打一个大大的问号。试想一下这个场景,当你脑子里冒出这个念头,啊,这个类,应该提出接口来,要这个方法,这个,和这个,还有这两个事件。啊,不行,我现在就得提,不然就忘了。我得新建一个接口,点哪个来着。啊,在哪里新建……建好了,对了我要提取哪几个方法来着。(我晕死)许多时候你的念头都是一闪而过的,需要你的操作也相应的跟上。这个操作在Resharper就是,把光标移动到类名上,然后点Ctrl+Shift+R,除了你想要的提取接口,其他的重构功能也一目了然。而且远比VS自带的要快。
至于右键,如果你刚开始实在记不住快捷键,只能使用它了,或者Alt+R,实际上它也要比右键菜单快一点点。
真正激动人心的是在随着你逐渐熟悉Resharper以后,能够带来的诸多方便之处,我将会在接下来的一系列随笔中讲述。

Resharper的基本设置

智能提示

安装完毕后,IDE 的智能提示(Intellisense)便会默认使用 Resharper 的提示,如果你不喜欢Resharper的提示,可以改回VisualStudio的,或者你也可以选择Custom进行自定义。

懒得勤快的博客_全栈开发者_互联网分享精神

注意事项

Resharper安装后,会做几件事情,这几件事情对于初次使用者,比较麻烦,因此归纳总结一下,以供参考。

1、工具 - 选项 - 文本编辑器 - C# - 常规 - 自动列出成员 勾选这个选择框。如果不勾选当你使用某个方法的时候,便不会提示参数,是一个很郁闷的事情。可以手动勾上。

懒得勤快的博客_全栈开发者_互联网分享精神

2、工具 - 选项 - 文本编辑器 - C# - 高级 - 显示实时语义错误 / 在编辑中用下划线标识错误 如果卸载了Resharper并且这两项没有被勾选,vs编辑器便不会实时提示错误。因此卸载Resharper后,需要把这两个选项重新勾选上。

懒得勤快的博客_全栈开发者_互联网分享精神 

快捷键

强烈建议你使用 Reshaper 的快捷键,不要担心 Reshaper 会把你原来的快捷键设置给覆盖了,因为如果某个快捷键和 VS 是冲突的,Reshaper会让你自己选择需要使用 VS 还是 Resharper 的快捷键,看如下界面:

懒得勤快的博客_全栈开发者_互联网分享精神

注意,不要选择 Apply to all Reshaper shortcuts,如果选择了,这个界面将不会再出现了,而一般情况下,你会更喜欢在冲突的时候让自己做决定。

当然,如果你一定要使用 VS 原来的快捷键,那么,就应该在 Option 的如下窗口中选中红框内的选项,然后抖抖手,点 Save:

懒得勤快的博客_全栈开发者_互联网分享精神

常用快捷键

Alt + F7 查找引用

Ctrl + N Go To Everything 定位到任何,非常强大

Ctrl + Shift + N Go To File 定位到文件

Ctrl + F12 Go To File Member 在当前类中查找

F2 重命名,重构利器

Ctrl + Tab 活动文件,当前打开的所有文件

Ctrl + Shift + Alt +向上/向下 上下行代码交换位置

Ctrl + W 选中整个/一块单词

Ctrl + Alt + F Clean Code

Ctrl + Alt + J Sorround with Template,快速添加语句块,如if,for,try catch,using,#region

Ctrl  + Q 快速文档

Alt + F12 显示下一个Error

Ctrl + E 显示最近编辑的文件

Alt + F8 Inspect This(需要自定义键盘) 查看字段或属性在那儿被赋值

懒得勤快的博客_全栈开发者_互联网分享精神

导航和搜索

ReSharper提供了很多导航和搜索功能。

跳到声明

Ctrl键,将鼠标悬停在你的代码上。您将看到,其他位置定义的所有相同的符号在焦点时都会出现下划线。同时你可以按住Ctrl键并点击任何符号直接导航到它的声明。如果符号在当前解决方案中定义,ReSharper将打开相应的文件并将光标带到声明处。如果符号在编译库中定义,ReSharper将根据您的喜好打开它。

懒得勤快的博客_全栈开发者_互联网分享精神

查找用法

要反向导航,即找到解决方案中的所有使用该符号的地方,请按VS快捷键:Shift+F12,Resharper快捷键:Alt+F7。Resharper将快速找到并显示符号的所有用法。

检查可用的导航操作

另一个方便的导航快捷键VS快捷键 :Alt+~,Resharper快捷键:Ctrl+Shift+G。当您按任何符号,Resharper显示所有可用的导航选项:

懒得勤快的博客_全栈开发者_互联网分享精神

在解决方案中查找

如果你需要在解决方案中查找,按VS快捷键 :Ctrl+T,Resharper快捷键:Ctrl+N。调用此功能,将展示包括最近的文件,导航的项目,建议列表。您可以开始键入以查找类型,符号,文件,最近编辑,最近文件和最近查看的方法。

在解决方案树中定位当前文件

当导航命令将您带到一个新文件时,您可能希望看到它在解决方案资源管理器中的位置。只需按下Shift+Alt+L,解决方案资源管理器将定位到当前文件。

在编辑器中编码

当你在编辑器中工作时,代码编辑助手是你的帮手。

代码完成(IntelliSense智能感知)

所有完成功能支持CamelHumps-也就是说,你可以只通过输入其大写字符完成任何项目。

ReSharper补充和扩展了Visual Studio的本地代码完成(IntelliSense)与更高级的功能。例如,它根据您的输入缩小建议列表,自动导入所选类型和扩展方法,在完成方法名称时添加括号,根据类型建议变量和字段名称等。

懒得勤快的博客_全栈开发者_互联网分享精神

如果需要,你可以随时通过选择相应的选项回到本地Visual Studio IntelliSense,ReSharper->Options–>Environment->IntelliSense->General

无论您是否喜欢,您都可以在键入某些内容之后,或者甚至不需要输入,显式调用ReSharper的代码完成功能。任何有意义的代码都可以自动完成

你还可以按几次完成快捷方式获得更高级的完成建议。

按VS快捷键 :Ctrl+Alt+Space,Resharper快捷键:Ctrl+Shift+Space调用智能补全,提供基于预期类型的表达建议。

按VS快捷键 :Shift+Alt+Space,Resharper快捷键:Ctrl+Alt+Space调用导入符号完成,不管他们属于哪个命名空间,都将显示匹配给定前缀的所有类型,在必要时导入适当的命名空间到当前文件。

选择和移动代码块

尝试按VS快捷键 :Ctrl+Alt+Right Resharper快捷键:Ctrl+W/VS快捷键 :Ctrl+Alt+Left Resharper快捷键:Ctrl+Shift+W。这些快捷方式允许您选择连续符号,行或代码块,以便您可以轻松地选择任何所需的表达式进行复制,剪切或移动。

如果你需要移动选定的代码块,按?Ctrl+Shift+Alt,然后使用箭头键块移动到任何允许的位置。

万能的 Alt + Enter

如果我们使用了 Reshaper 的快捷键设置,那么,在每个出现提示的地方,点击 Alt + Enter 组合键,就会弹出 Resharper 建议你要进行的操作,比如:

懒得勤快的博客_全栈开发者_互联网分享精神

在这个提示里,Reshaper 告诉我们没有引用 System.Text 这个命名空间,这个时候,点击 Alt + Enter 就会自动 Using 该命名空间了;

自动完成语法糖

再比如:

懒得勤快的博客_全栈开发者_互联网分享精神

在 StringBuilder 上 Alt+Enter 组合键,就会提示你此处要用 var。

或者,又比如在 if 上使用组合键,就会提示你用三元运算符:

懒得勤快的博客_全栈开发者_互联网分享精神

总之,Alt + Enter 是万能的,看到提示,就使用它,你常常会得到有意义的帮助来提升你代码的质量。一些复杂的 LINQ 你不会写,使用 Alt+Enter 就会自动帮你将一些代码转换成很牛叉的 LINQ,看上你好像是个 LINQ 高手一样;

提示

懒得勤快的博客_全栈开发者_互联网分享精神

这个小灯就是提示,如果不想使用 Alt + Enter,就用鼠标猛戳这里,也会出现 Resharper 的建议。

这里有几个例子:

如果你看到一个红色的灯泡懒得勤快的博客_全栈开发者_互联网分享精神或黄色的灯泡懒得勤快的博客_全栈开发者_互联网分享精神图标,按下Alt+Enter,因为这些行动指标都会告诉你,Resharper的已检测到错误或其他的代码问题,而且它知道如何解决它。

如果你看到一个锤子懒得勤快的博客_全栈开发者_互联网分享精神的图标,可以忽略,也可以修改代码。如果你想修改代码,按Alt+Enter显示帮助。Resharper可以提供数以百计的环境动作,例如,迅速改变符号可见性,添加遍历集合,和更多。

在任何地方按Alt+Enter。将能够快速找到并执行任何可用的ReSharper动作:

懒得勤快的博客_全栈开发者_互联网分享精神

Find Usage

Find Results

在某个类,或者变量,或者方法上点 Find Usage ,或者戳快捷键 Alt+F7,就是把你选中类或变量或方法全部被引用到的地方显示出来。VS2012之后的版本的查找和查找引用功能简直弱爆了。总之,这个功能也是 Reshaper 的一个亮点。

懒得勤快的博客_全栈开发者_互联网分享精神

尤其,我们注意到图中处,它将你多次查找用页签的形式给你保留了起来,我们在分析代码的时候,往往会一次性查找多个变量的引用,在这个时候,就特别有帮助。总之,这个功能必要而且很程序员。

查找赋值

假如我们想查找某个属性在那些地方被赋值,这个功能就相当实用。建议将快捷键设成了 Alt+F8 - Value Origin,或者你可以打开Resharper的菜单或在变量上鼠标右键,选择 Inspect – Value Origin

懒得勤快的博客_全栈开发者_互联网分享精神

如下图查找结果,共有2处地方对它进行过赋值

懒得勤快的博客_全栈开发者_互联网分享精神

文档结构

你是否恼怒与查看类的结构要去戳这个下拉框:

懒得勤快的博客_全栈开发者_互联网分享精神

这个时候,你按组合键 Ctrl + F11或者Resharper->Windows->File Structure,就会出现 Resharper 的 File Structure 窗口:

懒得勤快的博客_全栈开发者_互联网分享精神

很方便的让你看到你的整个成员变量窗口。

万般兼重构

一个永远写出完美代码的程序员永远只存在于一个 白痴Leader 的头脑里,作为码畜的我们都知道,代码是重构出来的,永远不是设计出来的。所以,你永远需要 Ctrl + Shift + R

懒得勤快的博客_全栈开发者_互联网分享精神

Resharper 把你可能用到的重构方法都列出来了,动动键盘或者鼠标,你即刻就可以完成一次重构。

正则表达式 

ReSharper提供了一套丰富的工具来处理.NET正则表达式。您可以快速分析现有表达式,查找并修复错误。当输入新的表达式时,ReSharper帮助自动完成和验证。

字符串文字中的正则表达式

默认情况下,ReSharper仅pattern 在Regex 类的方法中处理 参数中的正则 表达式。但是,包含正则表达式的字符串可以在不同的地方定义:字符串常量,字段,其他方法的参数等。如果您希望ReSharper将字符串作为正则表达式处理,您有三种不同的选择:

使用上下文操作:Alt+Enter 在插入符号时按下 并选择 标记为.NET正则表达式。

ReSharper会将与该字符串对应的符号范围标记为正则表达式,将该范围保存在其内部数据库中,并将随着包含文件的更改而跟踪该范围。这种方式非常快速简单,但有两个缺点:在外部文件更改(例如VCS合并)后范围可能会丢失,并且以此方式标记的注入将仅在本地进行跟踪。

如果稍后决定禁用将该字符串作为正则表达式处理,则可以使用" 删除.NET正则表达式标记 上下文"操作。

另一种方法是注释的自己的方法是使用正则表达式的参数 [RegexPatternAttribute] 从 JetBrains.Annotations。这是参数中正则表达式的推荐方式。

ReSharper会将方法调用中的相应参数处理为正则表达式:

懒得勤快的博客_全栈开发者_互联网分享精神

第三种方法是/*language=regexp|jsregexp*/在字符串文字之前的注释 。这些评论需要一些打字,可能会污染你的代码,但另一方面,他们会让读者明白你的意图,他们不会失去意识,任何人使用ReSharper打开你的代码将获得相同的功能标有字符串。顺便说一句,评论的格式与基于IntelliJ平台的IDE兼容 。懒得勤快的博客_全栈开发者_互联网分享精神

突出显示

ReSharper强调正则表达式中的语法结构以及错误和冗余:

懒得勤快的博客_全栈开发者_互联网分享精神

突出显示颜色具有以下含义:

浅蓝色 - 字符类,锚点和量词
浅绿色 - 分组结构
橙色 - 设置结构
粉红色和浅粉红色 - 转义序列
绿色 - 评论
红色与卷曲下划线 - 错误
蓝色的卷曲下划线 - 警告

当您将插入符号设置为其中一个分隔符时,会突出显示分组中的括号,分组名称和集合。您可以使用Environment->Editor->Highlight matching delimiter when caret is来切换和调整编辑器主题。

懒得勤快的博客_全栈开发者_互联网分享精神

默认情况下,ReSharper在所有非逐字字符串中突出显示正确和不正确的转义序列:

懒得勤快的博客_全栈开发者_互联网分享精神

如果不需要,可以通过清除Code Inspection->Settings->Highlight special character in string literals 来关闭突出显示。

懒得勤快的博客_全栈开发者_互联网分享精神

修复错误

要修正正则表达式中的错误,请将插入符号设置为红色突出显示,然后按 Alt+Enter,然后选择相应的快速修复建议。

正则表达式错误最常见的例子是滥用转义字符。

懒得勤快的博客_全栈开发者_互联网分享精神

ReSharper可帮助您自动修复错误:

懒得勤快的博客_全栈开发者_互联网分享精神

验证和测试

ReSharper允许您在设计时或调试时验证并测试正则表达式模式。在"Validate Regular Expression"对话框中,您可以输入各种示例字符串,并查看正则表达式与这些字符串的匹配程度。该对话框在主菜单中可用: ReSharper->Tools->Validate Regular Expression。使用这个对话框,你可以修复你的表情,并确保你得到所需的匹配。

懒得勤快的博客_全栈开发者_互联网分享精神

ReSharper使用标准的.NET正则表达式引擎来处理表达式,其运行方式与运行时完全相同。示例字符串中的所有匹配都会突出显示

此外,通过匹配,组中的匹配和组中的所有捕获(如果它们中有两个以上)匹配显示在树视图中。您可以选择树中的节点以突出显示正则表达式中样本字符串和组的相应部分(如果选择了组或捕获)。

验证代码中的正则表达式

用正则表达式设置插入符号。

按下Alt+Enter或单击插入符号左侧的指示器以打开建议列表。

选择Validate Regular Expression上下文操作。

在打开的"Validate Regular Expression"对话框中,在"Test Input" 区域中提供一些示例字符串 。 
要同时测试多个样本字符串,请用新行分隔字符串,然后选中 单独 检查行复选框。请注意,在这种情况下,样本应该是单行字符串。

如有不需要,您可以在Option下拉列表中更改引擎的正则表达式选项 。

如果正则表达式按预期工作,可将其重新插入代码中。

智能感知

ReSharper为几乎所有的.NET正则表达式构造提供了IntelliSense支持。在完成列表中,每个结构都以简要说明显示。

懒得勤快的博客_全栈开发者_互联网分享精神

在正则表达式中,您可以使用四种类型的IntelliSense:

自动完成 - 触发后 \, ( 和 [ 字符
基本完成 (Ctrl+Space) - 显示可用于当前范围的元素
智能完成 (Ctrl+Alt+Space) - 显示当前范围的最可能元素
双完成 (Ctrl+Space 两次) - 显示所有可能的元素

使用Match.Groups属性时,您还可以从ReSharper的智能感知中受益 。ReSharper检测表达式中的组名并在自动完成列表中建议:

懒得勤快的博客_全栈开发者_互联网分享精神

提取预编译的正则表达式

如果您需要重用正则表达式(在Regex 该类的静态方法中使用该正则表达式),则可以将其提取到预编译的正则表达式。

要提取正则表达式,需要在方法调用的任意位置设置插入符号,然后按下 Alt+Enter 并选择" 预编译的正则表达式" 上下文操作。

例如,您可以从IsMatch 方法的pattern 参数中 提取正则表达式 : 

public void Bar()
{
    var result = Regex.IsMatch("Input", "Pattern");
}

在应用上下文动作之后,模式被提取到静态字段中:

private static readonly Regex Regex1 = new Regex("Pattern");
public void Bar()
{
    var result = Regex1.IsMatch("Input");
}

语言注入

如果字符串文字(以及类似XML的语言中的标签或属性)包含其他一些正式语言,如正则表达式,HTML等,ReSharper可以提供代码检查, 快速修复, 代码完成, 上下文动作,以及语言的许多其他功能。

在C#,JavaScript和TypeScript字符串中,ReSharper支持以下嵌入式语言:

常用表达式
JavaScript
HTML
CSS
JSON
XML

ReSharper可以处理两种类型的语言注入:

自动语言注入

在某些情况下,可以明确检测到另一个语言文件中的语言摘录,例如<script></script> 标记内的JavaScript 或style HTML 中属性的CSS 。在这些情况下,ReSharper会自动检测嵌入式语言。

如有必要,您可以在代码编辑|的特定情况下禁用自动语言注入 ReSharper选项的语言注入页面。

手动语言注入

当字符串文字中的形式语言不能自动检测到时,ReSharper允许您手动将文字标记为包含特定语言的方式如下:

使用上下文操作,它实际上告诉ReSharper标记与字符串对应的符号范围,将此范围保存在其内部数据库中,并在包含文件更改时对其进行跟踪。这种方式非常快速和直接,但有两个缺点:在外部文件更改(如VCS合并)后范围可能会丢失,并且标记为注释的注入将仅在本地进行跟踪:

懒得勤快的博客_全栈开发者_互联网分享精神

标记方法参数接受与正则表达式 [RegexPatternAttribute] 从 JetBrains.Annotations。这是参数中正则表达式的推荐方式。

/*language=javascript|html|regexp|jsregexp|json|css|xml*/ 在字符串文字之前 放置注释 。诚然,这些评论需要一些打字,你甚至可以认为他们污染你的代码。但是,他们的目的是让读者清楚读者的意图,他们不会迷路,任何人用ReSharper打开代码都会在标记的字符串中获得相同的功能。 
顺便说一下,注释的格式与基于JetBrains Rider 和 IntelliJ平台的IDE兼容 。

懒得勤快的博客_全栈开发者_互联网分享精神

您也可以 在评论中使用 prefix= 和 postfix=参数。例如,如果一个字符串只包含一个CSS属性列表,则可以在它之前添加以下注释: //language=css prefix=body{ postfix=}。这将使ReSharper将字符串解析为有效的CSS。

Cleanup Code

写了一个龌蹉的类之后,什么是最愉快的,就是让它顺便变干净以及变规范,这个时候,我们需要右键 Cleanup Code (Ctrl + Alt + F):

懒得勤快的博客_全栈开发者_互联网分享精神

Resharper 提供了一种选择,让我们自己设置 Cleanup Code 的规范,当然,也可以引入StyleCop插件,配合这个规范可以设置起来非常方便。

快速信息

安装后,在当前的代码窗口右侧可以看到一些“绿色/黄色/红色”的方框(如右图所示),而边框上会出现一道一道红的橙的横杠。什么意思:当红杠出现时,表明你的代码在那个位置出现了错误,如果是橙杠,表明那是一个警告,多半是没有检测null值或者声明后未使用之类。

如果当前文档的所有错误和警告都得到了适当的处理,则不会再出现横杠,而最顶上的方框也会变成绿色; 如果没有错误但有警告,则是黄色,这时编译可以通过。

懒得勤快的博客_全栈开发者_互联网分享精神

生成代码

ReSharper可以通过提供自动生成样板代码帮助您集中精力于编程。例如,您可以调用不存在的方法,ReSharper将基于用法创建此方法,同时考虑返回类型和参数类型。

生成类型成员

当您插入的符号是类型声明,在任何地方按Alt+Insert。在打开的弹出菜单中,您可以选择要生成的类型。ReSharper可以创建构造函数,属性,重写成员等。

懒得勤快的博客_全栈开发者_互联网分享精神

快速完成代码

使用 VS 提供的智能感知和 TAB 键,能够快速完成代码,比如输入代码 prop,然后按 Tab 键,就会自动创建一个属性,不过 Resharper 提供了另外的选择,看上去可以完成更多的代码。

按组合键 Alt + Insert,出现如下窗口:

懒得勤快的博客_全栈开发者_互联网分享精神

话说我从来没有使用 VS 的方法自动完成过创建一个构造器,而使用 Resharper 就可以轻松实现。

应用代码模板

当你要写一个典型的代码块,如"for"或"foreach"循环,一个安全的类型转换,断言等,按VS快捷键 :Ctrl+E,L Resharper快捷键:Ctrl+J,然后选择相应的现场模板。

懒得勤快的博客_全栈开发者_互联网分享精神

类似的,可以围绕现有的代码块创建典型的代码结构,如"if ... else‘,‘try ... catch",等等。在这种情况下,按VS快捷键 :Ctrl+E,U Resharper快捷键:Ctrl+Alt+JAlt+Enter

懒得勤快的博客_全栈开发者_互联网分享精神

如果你发现ReSharper的代码模板有用,你可以添加新文件表单模板和创建自己的代码模板。

创建自己的代码模版

你可以在Resharper中创建自己的代码模版,比如m1代表生成一个参数的实例方法,可以这样创建:

打开代码模版管理器Templates Explorer

懒得勤快的博客_全栈开发者_互联网分享精神

进入到模板管理器

懒得勤快的博客_全栈开发者_互联网分享精神

然后选择左边的代码类型,比如我要创建C#的代码模版,就选择C#,现在你能看到这里面有很多自带的代码模版,然后点击创建模版按钮。

懒得勤快的博客_全栈开发者_互联网分享精神

然后在VS中打开模板编辑器窗口进行创建模版:

懒得勤快的博客_全栈开发者_互联网分享精神

模板编辑完成后,直接Ctrl+S即可保存到自己的代码模版里。

模板说明:模版变量用$符号包裹起来,如果包裹的变量是代码的一些关键字,则会在代码生成时作为首选的关键字填充到相应的位置,如果不是,则会以相应的变量名填充到相应位置,$END$是内置模版变量,代表模板生成后鼠标光标最后停留的位置。

多看一下Resharper自带的其他代码模版,你就知道怎样去编写自己更多的代码模版了。

懒得勤快的博客_全栈开发者_互联网分享精神懒得勤快的博客_全栈开发者_互联网分享精神

代码风格问题

使用ReSharper,您可以控制代码中的大多数风格:命名标准,格式规则,文件类型布局,文件头风格,和许多其他小东西(比如改变顺序或使用"var"关键字)。

您即可以用ReSharper代码样式功能 - 所有默认值都是根据Microsoft准则和众多最佳做法选择的。同时,代码风格也都可以更改,以适应您的个人或企业偏好。

要应用代码风格规则,按VS快捷键 :Ctrl+E,C Resharper快捷键:Ctrl+Alt+F。ReSharper会提示您选择两个默认值代码清理配置文件之一:1.重新设置代码风格。2在选定范围内应用多个代码样式规则。

遍历代码

您可以按Ctrl+T快速查找类型,方法或基本所有内容,同时Ctrl+Shift+T让您找到文件。

将您的光标放在using(或者import如果您使用VB.NET)指令并按下Shift+F12。Resharper将显示这个命名空间的使用位置(查找符号的用法)。

忘记你刚才在编辑的地方?转到最后编辑位置用Ctrl+Shift+Backspace

想要定位当前符号的真实位置?按F12右键单击该符号。

转到包含声明(Ctrl+[)可与被用于Shift以选择整个声明

在定位CustomerServicesTest使用Ctrl+T或任何其他导航命令时,您不需要键入整个事物。只需使用CamelHumps并键入cst。

Alt+Home将您引导至基本类型并将Alt+End您引导至当前类型的继承者。

你想转到班级中的下一个成员吗?Alt+Down会带你到那里;Alt+Up会带你回来。

搜索任何东西(用法,实现,范围外部的代码等)都会提取到查找结果窗口。然后使用它在搜索结果与F8/Shift+F8之间导航。

在源代码中,Shift+Alt+L在解决方案资源管理器中选择当前文件;在反编译的源代码中,它会打开关注当前类型的AssemblyExplorer窗口。

要浏览当前在剪贴板中的堆栈跟踪,只需按Ctrl+E,T

开始在ReSharper工具窗口中输入,内容将缩小到匹配的项目。CamelHumps匹配工作在那里。

使用GoToFile(Ctrl+Shift+T)在解决方案资源管理器中查找特定项目-只需选择一个.csproj文件。

在查找类型时Ctrl+T,可以使用通配符。想要所有的ViewModels?键入*ViewModel。

单元测试

使用Ctrl+U,L解决方案中的运行所有的单元测试(更多...)。

想要运行一些特定的测试?在编辑器中选择它们,右键单击并选择运行单元测试(更多...)。

开始在单元测试资源管理器窗口中输入,按名称过滤测试。

在单元测试会话窗口中运行时筛选失败的测试,以便在它们通过时看到它们愉快地消失(更多...)。

ASP.NET和ASP.NETMVC

在ASP.NETMVC应用程序中,输入returnView("并按下Ctrl+Space。智能感知会列出所有可用的视图。

键入rta并按下TAB。填入控制器,然后填入动作参数。现在它应该按照IntelliSense正确的顺序!

想要检查ASP.NETMVC中丢失的视图吗?打开解决方案范围的分析。View("Login")如果Login.aspx不存在,将显示为红色。

您也可以在ASPX/Config文件中使用"转到文件成员"命令。按下Alt+\并查找它!

在ASPX页面中,使用导航到相关文件(CSS,JavaScipt,用户控件等)Ctrl+Alt+F7。

转换代码

您可以在ReSharper中定义要使用的上下文操作,Resharper->Options->Code Editing->Context Actions->[语言]

懒得勤快的博客_全栈开发者_互联网分享精神

你在同一个文件中有多个类吗?快速修复它。按下Ctrl+Shift+R解决方案资源管理器中的文件,然后选择将类型移入匹配文件。

随时随地重命名任何东西Ctrl+R,R。即使用更少的步骤也可以做到-只需输入一个新名称并点击即可Alt+Enter。

您可以使用一段代码提取方法Ctrl+R,M

想要将字符串文字移动到资源文件?按Ctrl+Shift+R字符串上的任意位置并选择移动到资源。

输入新的方法签名(更改参数的数量或类型,更改返回类型),签名用灰色框突出显示时,点击Alt+Enter应用更改签名重构。

把你的光标放在一个属性上,你可以按Alt+Enter它将它从自动属性改变为具有后台字段的属性,反之亦然。

按Ctrl+R,S以更改签名的方法,看到一个预览应用之前。ReSharper会完成剩下的工作!

认为你的代码需要一个很好的清洗?使用Ctrl+E,C并运行完整清理配置文件。

分析代码

懒得勤快的博客_全栈开发者_互联网分享精神

甚至在运行代码之前使用[NotNull]和[CanBeNull]属性可以帮助您找到NullReferenceException。

右键单击解决方案资源管理器中的文件,项目,解决方案文件夹或整个解决方案,然后选择查找代码问题以查看所选项目的错误,警告和建议。

困扰突出的代码问题?Alt+Enter在突出显示的代码处按下并选择检查[检查名称],然后您可以选择使用注释或属性来抑制问题,或者禁用相应的代码检查。

您可以使用单个注释标记代码来抑制所有检查-标记代码与//ReSharperdisableAllReSharper不会抱怨什么,直到它符合相应的//ReSharperrestoreAll。

ReSharper的解决方案范围分析解决了可见性问题:您会看到是否在组件外部使用内部成员,并且永远不会错过单个未使用的非私有成员。

您可以在ReSharper|中的代码分析中通过掩码排除文件选项|代码检查|设置|跳过的元素。

按/可以转到文件中的下一个/上一个代码问题。Alt+PageDown,Alt+PageUp

要在您的解决方案中查找所有可本地化的字符串,请在相关项目的属性中设置Localizable=Yes和LocalizableInspection=Pessimistic,然后找到任何此类sting,用下划线突出显示,按下Alt+Enter并选择Inspection'ElementisLocalizable'|查找类似的问题。

处理不同的语言版本

随着编程语言的发展,用新的语言特性改进代码是很自然的。另一方面,可能有些因素会阻止您升级到最新的语言版本。

ReSharper知道不同的语言版本。它分析代码并根据当前语言版本应用其自己的功能。每种语言都会自动检测语言版本,但您可以按照以下说明为某些语言手动设置版本。

C#

Resharper完全支持所有C#版本,默认情况下,ReSharper根据关联的编译器自动检测C#版本。但是,您可以在VisualStudio的"属性"窗口中使用C#语言级别属性(View|PropertiesWindow)来显式指定目标C#版本。

VB.NET

Resharper完全支持所有VB.NET版本,默认情况下,ReSharper会根据关联的编译器自动检测VB.NET版本。但是,您可以通过在解决方案资源管理器中选择项目并使用VisualStudio的"属性"窗口中的VB.NET语言级别属性(View|PropertiesWindow)来显式指定目标VB.NET版本。

TypeScript

如果TypeScript版本是自动检测的(默认情况下是这样),并且在您的解决方案中有几个不同TypeScript版本的项目,ReSharper将使用整个解决方案的最高版本。

Resharper完全支持所有TypeScript版本。ReSharper<TypeScriptToolsVersion>根据VisualStudio项目文件中的属性自动检测TypeScript版本。但是您可以使用CodeEditing|TypeScript|Inspections上的TypeScript语言级别选择器明确指定目标TypeScript版本

JavaScript

Resharper完全支持JavaScript到ECMAScript,包括实验性功能,如async/await,指数运算符和对象文字/解构literals/destructuring,rest/spread。jQuery和JSX语法也被支持。

默认情况下,代码检查和其他ReSharper功能根据通用支持的ECMAScript5标准分析JavaScript代码。如果您在项目中使用更高级的JavaScript代码,则可以在CodeEditing|JavaScript|Inspections

C++

C++支持可以通过ReSharperC++获得-这是一种专用产品,您可以单独安装,也可以与ReSharper或ReSharperUltimate一起安装。

Resharper支持C,C++,ReSharper根据平台工具集(项目属性中的General|PlatformToolset)/std开关

CSS

Resharper支持CSS。实际上,CSS版本远不如由不同web浏览器支持的CSS功能集重要。因此,ReSharper可以让您针对特定Web浏览器的特定版本调整其CSS代码检查。您可以在CodeEditing|CSS|Inspections

总结

很多人说大内存+SSD的Resharper性能问题依然很卡,我想,一个可能的原因是打开的文档太多了,如果你有时刻关闭不需要的文档的习惯,性能或许不会那么差,并且你可以随时打开这些你关闭了的文档,就像在已经打开的文档中切换一样的方便。

我们保持每次改动都仅涉及两三个文件的好习惯,并且频繁的commite到源代码服务器上去。这样我们每次真正要编辑的文件不多,性能不是问题。

和大家分享了很多Resharper使用的技巧,点点滴滴都已经融入我日常的开发工作中了。这篇文章很主观,我觉得它好,你可能觉得它不好,萝卜青菜各有所爱。再说,它也不是没有白痴的地方,在文档上点右键增加的一个CloseAll功能,可以关闭所有打开的文档,关闭了干什么,对着一个空白的屏幕发呆么?我觉得原生的“除此之外全部关闭”就够了。还有一个定位的功能(Locatein Solution Explorer),真是没用,如果你在VS选项中设置了,在解决方案管理器中跟踪活动项,那么VS自动就给你定位了。
不管怎么说,它带给我更快更方便的开发体验,把我从一些琐碎的,不人性化的功能中解放出来。从这一点上来说,我很希望越来越多的人喜欢上它,开始用它,并帮助它更好的发展。

下一步

你可以签出在GitHub上的Resharper工作集。这是一个Visual Studio解决方案,提供一步一步的代码练习导航,编辑,检查,重构等等。

https://github.com/JetBrains/resharper-rider-samples

分享一个自己已经定制好的Resharper首选项配置

Resharper->Manage Options->Import from File,选择配置文件导入即可。

懒得勤快的博客_全栈开发者_互联网分享精神懒得勤快的博客_全栈开发者_互联网分享精神

https://www.lanzous.com/i2hlnle

分享到:

文章历史版本:

修改次数:2 次 查看历史版本

版权声明:

本文仅用于学习、研究和交流目的,欢迎非商业性质转载。本文链接:https://masuit.com/1386

l  博主在此发文(包括但不限于汉字、拼音、拉丁字母)均为随意敲击键盘所出,用于检验本人电脑键盘录入、屏幕显示的机械、光电性能,并不代表本人局部或全部同意、支持或者反对观点。如需要详查请直接与键盘生产厂商法人代表联系。挖井挑水无水表,不会网购无快递。

l  文章内容部分来源于互联网,不代表本人的任何立场;涉及到的软件来源于互联网,仅供个人下载使用,请勿用于商业用途,版权归软件开发者所有,下载后请于24小时内删除,如有真实需要请支持正版!因下载本站任何资源造成的损失,全部责任由使用者本人承担!如果你是版权方,认为本文内容对您的权益有所侵犯,请联系博主,并参照侵删联系的说明提交相应的证明材料,待博主进行严格地审查和背景调查后,情况属实的将在三天内将本文删除或修正。

l  博主的文章没有高度、深度和广度,只是凑字数。由于博主的水平不高(其实是个菜B),不足和错误之处在所难免,希望大家能够批评指出。

l  博主是利用读书、参考、引用、抄袭、复制和粘贴等多种方式打造成自己的纯镀 24k 文章,请原谅博主成为一个无耻的文档搬运工!

l  博主只是一名普通的互联网从业者,不懂修电脑,不会卖电脑,不会帮你盗号,不会破解开机密码,找不回你丢失的手机等,如有这样的想法请绕道!

相关推荐:

再谈http请求的GET和POST的区别,以及为什么网上的多数答案都是错的。 互联网架构之浅谈数据库用户表结构设计与第三方登录接入
从.NET+25台服务器支撑世界第54大网站浅谈网站优化 补上博文一篇:由鹿晗公布恋情而引发的一次人生思考🤔
asp.net即时通信框架——signalR起步 所有编程语言为我作证,随机数"骗局"大揭秘,随机数都是骗人的!

评论区: