语法高亮
ReSharper扩展了默认Visual Studio的符号高亮显示。此外,它还会使用可配置的颜色突出显示字段,局部变量,类型和其他标识符。例如,ReSharper语法突出显示允许您轻松区分代码中的局部变量和字段。
C#的默认语法突出显示如下:
切换ReSharper语法突出显示
- 打开 代码检查| ReSharper选项的设置页面。
- 使用 颜色标识符 复选框启用或禁用ReSharper语法高亮显示。
-
单击 保存 以应用修改并让ReSharper选择保存它们的位置,或使用保存到 下拉列表将修改保存到特定的设置图层 。有关更多信息,请参阅 管理和共享resharper设置。
有关如何配置ReSharper语法突出显示的字体和颜色的指导,请参阅 配置字体和颜色。
色彩援助
ReSharper提供了一组功能,可以帮助您处理代码中的颜色定义。
无论颜色如何定义,任何颜色值都用相应的颜色加下划线。如果将指针悬停在颜色值上,则可以检查其他格式的颜色值:
颜色也在完成列表中可视化 :
无论何时您看到突出显示的颜色定义,都可以使用专用的可视化编辑器对其进行更改。
改变颜色定义
- 将插入符号放在突出显示的颜色定义中。
- 按下 Alt+Enter 并 从 动作列表中选择 从调色板中选取颜色。
- 在" 选择颜色" 对话框中,您可以使用三种模型选择颜色:AHSB,Web和ARGB。如果您知道所需颜色的数字值,则可以将其输入到适当的文本字段中。您可以使用颜色滑块和颜色字段来选择颜色。当您使用颜色栏和颜色滑块调整颜色时,数值会相应地调整。当您在颜色框中选择一种颜色时,它会同时显示AHSB和ARGB以及十六进制数字的数值。
- 您还可以单击 屏幕上某个点的拾取颜色, 并从任何正在运行的桌面应用程序中选取一种颜色。
-
单击 确定 以应用所选颜色并关闭对话框。
默认情况下,ReSharper突出显示颜色用法,但可以通过清除 " 代码检查"中的" 突出显示颜色用法"复选框 来关闭此功能 。 ReSharper选项的设置页面。
上下文操作
Alt+Enter
ReSharper_AltEnter上下文操作是编辑器中可用的代码转换助手。与 快速修复相比,上下文操作并不旨在解决问题或改进代码,相反,它们允许您快速引入诸如更改访问修饰符,生成检查为空的代码,将'foreach'转换为'for '等。
ReSharper以所有支持的语言提供数百个上下文操作。您可以在代码编辑|中找到完整列表 ReSharper选项的上下文操作页面以及上下文操作参考。
应用上下文操作
只要上下文动作可用于当前插入符号位置,ReSharper就会 在插入符号的左侧显示相应的 动作指示符 。然而,有时候,ReSharper会为当前的插入符号位置提供几种上下文可用的功能。在这种情况下,会显示与具有最高优先级的操作相对应的操作指示符,并且只有在您 通过单击操作指示符来展开操作列表或按下 Alt+Enter 上下文操作具有最低优先级时才会显示所有其他操作,因此它们经常出现在行动清单的底部:
在大多数情况下,立即应用上下文操作。但是,有些操作需要用户交互来选择它们如何转换您的代码。在这些情况下, 热点会话部署在编辑器中,您可以在其中选择一个建议值或在活动输入位置提供自己的值。
例如,以下是通过"foreach" 上下文操作应用迭代集合时发生 的情况:
创建 foreach 语句后,热点会话可帮助您完成生成的语句的可编辑参数:
要完成热点会话:
- 如果ReSharper的提出了当前参数,使用一些值 Up和 Down箭头键通过建议值的列表中导航,或者只是在键入一个所期望的值。
- 按 Tab或 Enter接受该值并移至下一个参数的输入位置。如果这是最后一个参数,则热点会话完成,插入符号将移动到为会话定义的结束位置。
- 按下 Shift+Tab可将输入焦点移至上一个参数的输入位置。
-
按 Esc退出热点会话。在这种情况下,所有会话参数都将使用默认值进行初始化。
配置上下文操作
默认情况下,大多数上下文操作都已启用,但您可以轻松禁用那些您认为无用的操作。
启用或禁用特定的上下文操作
- 在主菜单中,选择 ReSharper | 选项。
- 使用" 选项" 对话框中的搜索框 查找特定的上下文操作。
或者,打开 代码编辑| 上下文操作" 页面,并查找要禁用的上下文操作。 - 清除上下文操作旁边的复选框以禁用它。
-
单击 保存 以应用修改并让ReSharper选择保存它们的位置,或使用保存到 下拉列表将修改保存到特定的设置图层 。有关更多信息,请参阅 管理和共享resharper设置。
在更广泛的范围内应用上下文操作
一些上下文动作可以自动查找和更改更大范围内的类似代码项 - 在当前文件中,在当前项目中或在整个解决方案中。这些上下文操作与作用域中的修复相同 。例如,您可以将当前文件中的所有类型移动到新的匹配文件中:
可以在更广泛的范围内应用的上下文操作的完整列表包括:
C#
- 添加另一个访问器
- 添加块大括号来切换段语句
- 将名称添加到参数
- 将表达式主体成员转换为语句正文
- 将整数文字转换为二进制形式
- 将整数文字转换为十六进制格式
- 将积分文字转换为小数形式
- 将字符串插值转换为'string.Format'调用
- 完全限定对类型,静态成员或名称空间的引用
- 在整数文字中插入数字分隔符
- 以真实文字插入数字分隔符
- 插入泛型方法调用类型参数
- 将扩展方法调用为静态
- 将属性加入单个部分
- 将顺序检查合并到空传播表达式中
- 将类型移至另一个文件以匹配其名称
- 限定通过'using static'指令导入的静态成员
- 删除#region,#endregion指令(请参阅 添加和删除#区块)
- 删除参数名称
- 从数字文字中删除数字分隔符
- 删除多余的括号(请参阅 代码语法样式:可选圆括号)
- 用空传播表达式替换'?:'条件运算符
- 用数组替换数组初始值设定项
- 用'var'替换显式类型说明
- 用'?:'条件运算符替换空传播表达式
- 用单个声明表达式替换单独的解构声明
- 用显式类型声明替换'var'
- 指定枚举成员值
- 将属性拆分为单独的部分
- 将空传播表达式拆分为顺序检查
- 使用明确的丢弃声明
- 使用隐式放弃声明
-
在解构声明中使用单独的声明表达式
打字稿
-
将类型移至另一个文件以匹配其名称
正则表达式帮助
ReSharper提供了一套丰富的工具来处理.NET正则表达式。您可以快速分析现有表达式,查找并修复错误。当输入新的表达式时,ReSharper帮助自动完成和验证。
字符串文字中的正则表达式
默认情况下,ReSharper仅pattern 在Regex 类的方法中处理 参数中的正则 表达式。但是,包含正则表达式的字符串可以在不同的地方定义:字符串常量,字段,其他方法的参数等。如果您希望ReSharper将字符串作为正则表达式处理,您有三种不同的选择:
-
使用上下文操作:Alt+Enter 在插入符号时按下 并选择 标记为.NET正则表达式。
ReSharper会将与该字符串对应的符号范围标记为正则表达式,将该范围保存在其内部数据库中,并将随着包含文件的更改而跟踪该范围。这种方式非常快速简单,但有两个缺点:在外部文件更改(例如VCS合并)后范围可能会丢失,并且以此方式标记的注入将仅在本地进行跟踪。
如果稍后决定禁用将该字符串作为正则表达式处理,则可以使用" 删除.NET正则表达式标记 上下文"操作。
-
另一种方法是注释的自己的方法是使用正则表达式的参数 [RegexPatternAttribute] 从 JetBrains.Annotations。这是参数中正则表达式的推荐方式。
ReSharper会将方法调用中的相应参数处理为正则表达式:
-
第三种方法是/*language=regexp|jsregexp*/在字符串文字之前的注释 。这些评论需要一些打字,可能会污染你的代码,但另一方面,他们会让读者明白你的意图,他们不会失去意识,任何人使用ReSharper打开你的代码将获得相同的功能标有字符串。顺便说一句,评论的格式与基于IntelliJ平台的IDE兼容 。
突出
ReSharper强调正则表达式中的语法结构以及错误和冗余:
突出显示颜色具有以下含义:
- 浅蓝色 - 字符类,锚点和量词
- 浅绿色 - 分组结构
- 橙色 - 设置结构
- 粉红色和浅粉红色 - 转义序列
- 绿色 - 评论
- 红色与卷曲下划线 - 错误
-
蓝色的卷曲下划线 - 警告
有关正则表达式语法的更多信息,请参阅 MSDN。正则表达式语言 - 快速参考
当您将插入符号设置为其中一个分隔符时,会突出显示分组中的括号,分组名称和集合。您可以使用环境| 上的突出显示匹配分隔符设置 来切换和调整此突出 显示 编辑| 编辑器外观)页面的ReSharper选项。
默认情况下,ReSharper在所有非逐字字符串中突出显示正确和不正确的转义序列:
如有必要,可以通过清除代码检查| 中的字符串文字中的突出显示特殊字符复选框 来关闭此突出显示 ReSharper选项的设置页面。
修复错误
要修正正则表达式中的错误,请将插入符号设置为红色突出显示,然后按 Alt+Enter,然后选择相应的 快速修复。
正则表达式错误最常见的例子是滥用转义字符。
ReSharper可帮助您自动修复错误:
验证和测试
ReSharper允许您在设计时或调试时验证并测试正则表达式模式。在" 验证正则表达式"对话框中,您可以输入各种示例字符串,并查看正则表达式与这些字符串的匹配程度。该对话框在主菜单中可用: ReSharper | 工具| 验证正则表达式。使用这个对话框,你可以修复你的表情,并确保你得到所需的匹配。
ReSharper使用标准的.NET正则表达式引擎来处理表达式,其运行方式与运行时完全相同。示例字符串中的所有匹配都会突出显示
此外,通过匹配,组中的匹配和组中的所有捕获(如果它们中有两个以上)匹配显示在树视图中。您可以选择树中的节点以突出显示正则表达式中样本字符串和组的相应部分(如果选择了组或捕获)。
验证代码中的正则表达式
- 用正则表达式设置插入符号。
- 按下 Alt+Enter或单击插入符号左侧的 动作指示器以打开 动作列表。
- 选择 验证正则表达式 上下文操作。
- 在 打开的" 验证正则表达式"对话框中,在" 测试输入" 区域中提供一些示例字符串 。
要同时测试多个样本字符串,请用新行分隔字符串,然后选中 单独 检查行复选框。请注意,在这种情况下,样本应该是单行字符串。 - 如有必要,您可以在选项 下拉列表中更改引擎的正则表达式选项 。
-
如果正则表达式按预期工作,请单击 插入 将其重新插入代码中。
智能感知
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");
}
正则表达式帮助
ReSharper提供了一套丰富的工具来处理.NET正则表达式。您可以快速分析现有表达式,查找并修复错误。当输入新的表达式时,ReSharper帮助自动完成和验证。
字符串文字中的正则表达式
默认情况下,ReSharper仅pattern 在Regex 类的方法中处理 参数中的正则 表达式。但是,包含正则表达式的字符串可以在不同的地方定义:字符串常量,字段,其他方法的参数等。如果您希望ReSharper将字符串作为正则表达式处理,您有三种不同的选择:
-
使用上下文操作:Alt+Enter 在插入符号时按下 并选择 标记为.NET正则表达式。
ReSharper会将与该字符串对应的符号范围标记为正则表达式,将该范围保存在其内部数据库中,并将随着包含文件的更改而跟踪该范围。这种方式非常快速简单,但有两个缺点:在外部文件更改(例如VCS合并)后范围可能会丢失,并且以此方式标记的注入将仅在本地进行跟踪。
如果稍后决定禁用将该字符串作为正则表达式处理,则可以使用" 删除.NET正则表达式标记 上下文"操作。
-
另一种方法是注释的自己的方法是使用正则表达式的参数 [RegexPatternAttribute] 从 JetBrains.Annotations。这是参数中正则表达式的推荐方式。
ReSharper会将方法调用中的相应参数处理为正则表达式:
-
第三种方法是/*language=regexp|jsregexp*/在字符串文字之前的注释 。这些评论需要一些打字,可能会污染你的代码,但另一方面,他们会让读者明白你的意图,他们不会失去意识,任何人使用ReSharper打开你的代码将获得相同的功能标有字符串。顺便说一句,评论的格式与基于IntelliJ平台的IDE兼容 。
突出
ReSharper强调正则表达式中的语法结构以及错误和冗余:
突出显示颜色具有以下含义:
- 浅蓝色 - 字符类,锚点和量词
- 浅绿色 - 分组结构
- 橙色 - 设置结构
- 粉红色和浅粉红色 - 转义序列
- 绿色 - 评论
- 红色与卷曲下划线 - 错误
-
蓝色的卷曲下划线 - 警告
有关正则表达式语法的更多信息,请参阅 MSDN。正则表达式语言 - 快速参考
当您将插入符号设置为其中一个分隔符时,会突出显示分组中的括号,分组名称和集合。您可以使用环境| 上的突出显示匹配分隔符设置 来切换和调整此突出 显示 编辑| 编辑器外观)页面的ReSharper选项。
默认情况下,ReSharper在所有非逐字字符串中突出显示正确和不正确的转义序列:
如有必要,可以通过清除代码检查| 中的字符串文字中的突出显示特殊字符复选框 来关闭此突出显示 ReSharper选项的设置页面。
修复错误
要修正正则表达式中的错误,请将插入符号设置为红色突出显示,然后按 Alt+Enter,然后选择相应的 快速修复。
正则表达式错误最常见的例子是滥用转义字符。
ReSharper可帮助您自动修复错误:
验证和测试
ReSharper允许您在设计时或调试时验证并测试正则表达式模式。在" 验证正则表达式"对话框中,您可以输入各种示例字符串,并查看正则表达式与这些字符串的匹配程度。该对话框在主菜单中可用: ReSharper | 工具| 验证正则表达式。使用这个对话框,你可以修复你的表情,并确保你得到所需的匹配。
ReSharper使用标准的.NET正则表达式引擎来处理表达式,其运行方式与运行时完全相同。示例字符串中的所有匹配都会突出显示
此外,通过匹配,组中的匹配和组中的所有捕获(如果它们中有两个以上)匹配显示在树视图中。您可以选择树中的节点以突出显示正则表达式中样本字符串和组的相应部分(如果选择了组或捕获)。
验证代码中的正则表达式
- 用正则表达式设置插入符号。
- 按下 Alt+Enter或单击插入符号左侧的 动作指示器以打开 动作列表。
- 选择 验证正则表达式 上下文操作。
- 在 打开的" 验证正则表达式"对话框中,在" 测试输入" 区域中提供一些示例字符串 。
要同时测试多个样本字符串,请用新行分隔字符串,然后选中 单独 检查行复选框。请注意,在这种情况下,样本应该是单行字符串。 - 如有必要,您可以在选项 下拉列表中更改引擎的正则表达式选项 。
-
如果正则表达式按预期工作,请单击 插入 将其重新插入代码中。
智能感知
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合并)后范围可能会丢失,并且标记为注释的注入将仅在本地进行跟踪:
GIF
- 标记方法参数接受与正则表达式 [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。参数信息
ReSharper | 编辑| 参数信息
Ctrl+Shift+Space
ReSharper_ParameterInfoShow无论您何时编写或学习函数调用,ReSharper都可帮助您查看有关该函数的所有重载的允许参数的详细信息。在工具提示中,您将看到所有公共签名以及从函数的XML文档中摘取的简要描述(如果有的话)。
使用参数信息
在输入参数时,ReSharper会自动突出显示与输入参数兼容的下一个签名,并将不适用的签名灰显。
要研究现有函数调用的替代签名,请将插入符号设置在函数的括号内,然后按 Ctrl+Shift+Space 或选择 ReSharper | 编辑| 主菜单中的参数信息。
当显示参数信息工具提示时,您可以按 Ctrl+Shift+Space / Ctrl+Shift+Alt+Space 或使用箭头按钮滚动签名列表并显示当前选定签名的摘要。
配置参数信息
默认情况下,只要键入函数调用的左括号就会出现参数信息工具提示。如有必要,您可以禁用自动外观或在超时后显示工具提示,方法是使用" 环境"| " 自动显示参数信息" 智能感知| ReSharper选项的参数信息页面。如果禁用了自动外观,Ctrl+Shift+Space当插入符号位于函数的括号内时,您可以通过按键始终显示参数信息工具提示 。
您可以在Environment |上进一步配置参数信息工具提示 智能感知| ReSharper选项的参数信息页面有以下几种方式:
-
默认情况下,可用的签名显示在列表中。如有必要,您可以限制列表中签名的数量或使ReSharper一次仅显示一个签名:为此,请使用" 一次显示所有特征" 首选项。
-
默认情况下,代表以其原始形式显示。如有必要,ReSharper可以用lambda语法显示它们。要启用此行为,请选中相应的复选框。
-
如果您不想查看功能摘要信息,请清除 显示扩展信息 复选框。
-
默认情况下,ReSharper显示 [NotNull] 和 [CanBeNull] 注释。如有必要,您可以JetBrains.Annotations 使用注释 选择器隐藏或显示功能签名中的所有 属性 。
-
ReSharper可以在当前行的下方或上方显示参数信息工具提示。要指定所需的位置,请打开 环境| 智能感知| ReSharper选项的完成行为页面,单击 高级并使用 参数信息默认位置 选择器。
请注意,即使您选择工具提示的较低位置,也可以在工具提示在您输入时自动出现并且ReSharper在代码完成列表中显示一些建议时显示在上方 与此同时。当您使用Ctrl+Shift+Space 快捷方式调用工具提示时 ,它始终显示在首选位置。快速文档
ReSharper | 编辑| 参数信息
Ctrl+Shift+F1
ReSharper_QuickDoc无论您何时编写或学习函数调用,ReSharper都可帮助您查看有关该函数的所有重载的允许参数的详细信息。在工具提示中,您将看到所有公共签名以及从函数的XML文档中摘取的简要描述(如果有的话)。
查看符号的快速文档
- 插入符号的位置:
- 在编辑器中的符号。
- 在文件结构窗口 或任何其他ReSharper工具窗口中的符号处 。
- 在文档评论中的任何地方。
- 按 Ctrl+Shift+F1 或选择 ReSharper | 编辑| 在主菜单中显示快速文档...。或者,您可以按 Ctrl+Shift+A,在弹出窗口中开始输入命令名称,然后在那里选择它。
-
在出现的 快速文档 弹出窗口中,您可以学习符号文档并按照超链接查看相关文档。
当您输入方法调用时,只要输入方法名称,就可以检查方法的文档。如果该方法有多个重载,ReSharper会让你选择其中的一个:
快速文档 弹出窗口的 其他功能 包括:
- 无论何时您需要 在切换回编辑器之前保留" 快速文档"弹出窗口的内容,Pin窗口 按钮 都能派上用场 。单击此按钮后,当您使用其他Visual Studio用户界面项目时,弹出窗口将保留在编辑器之上。
- 弹出窗口左上角的类似浏览器的后退/前进导航按钮。
- 允许您导航到相关实体的文档的超链接,其中包括:
- 该 阅读更多 打开系统符号相关的MSDN文章链接。
-
在 去 链接,带你到无论是在编辑器解决方案项目或为您的首选方式符号声明 编译库项目 。
在快速文档弹出窗口中,您也可以 Ctrl单击任何超链接以转到相应符号的声明,而不是打开其文档。
对于重写和实施的成员,以下约定适用:
- 如果重写/实施的成员没有评论但其基本成员确实会显示基础成员评论。
-
如果他们都有评论,则显示重写/实施成员的评论。
这就是 从基本 上下文操作复制注释 派上用场的地方 - 当插入符号覆盖/实现的成员名称时,可以从其基类/接口复制成员文档。此上下文操作适用于属性,索引器和方法。
扩展/缩小选择
ReSharper | 编辑| 参数信息
Ctrl+Alt+Right / Ctrl+Alt+Left
ReSharper_ExtendSelection / ReSharper_ShrinkSelection无论您何时编写或学习函数调用,ReSharper都可帮助您查看有关该函数的所有重载的允许参数的详细信息。在工具提示中,您将看到所有公共签名以及从函数的XML文档中摘取的简要描述(如果有的话)。 "扩展选择" 命令允许您连续选择扩展的逻辑代码块,以便通过将插入符号放置在其中并按Ctrl+Alt+Right 几次来轻松选择代码中的任何表达式 。该命令也可在主菜单中找到:ReSharper | 编辑| 扩展选择。
收缩选择 完全相反。按 Ctrl+Alt+Left 或选择 ReSharper | 编辑| 缩小选择 以应用此命令。
对于重写和实施的成员,以下约定适用: CamelHumps ( ReSharper选项 的 Environment | Editor | Editor Behavior页面上的Use CamelHumps复选框 ),Extend / Shrink选择命令以稍微不同的方式工作。
如果启用了CamelHumps,则扩展/收缩选择命令会考虑化合物名称的某些部分。假设您已将脱字号放在复合名称的中间,其中有几个以大写字母开头的部分:
使用CamelHumps,Ctrl+Alt+Right 第一次按 选择当前部分的单词:只有在第二次按下此按键后,ReSharper才会选择整个单词:所有后续的印刷机都照常处理。
选择包含声明
Ctrl+Shift+[
ReSharper_SelectContainingDeclaration尽管 Extend选择 命令允许您精确选择单词,语句或代码块,但有时候您只需选择当前成员的插入符号或整个类型。ReSharper可帮助您通过一次按键操作。要选择当前成员,请按 Ctrl+Shift+[。如有必要,请再次按快捷键以选择整个类型。
突出显示匹配分隔符
当你在编辑器中使用代码,ReSharper的可以帮助你快速了解代码结构,通过突出显示打开或关闭分隔符((), [], {}和 <>)当您设定在其对插入符号。任何开头括号,括号,括号或引号(统称为"分隔符"),只要将脱字符放在相应的结束分隔符处,可以用颜色或轮廓突出显示,反之亦然。
如有必要,您可以通过以下方式更改默认行为:
- 可以关闭匹配分隔符的高亮显示。
- 只有当插入符号位于外侧,或者当插入符号的任何一侧时,ReSharper才能突出显示匹配的分隔符。
- ReSharper可以使用颜色突出显示匹配的分隔符或带有大纲边框:
-
分隔符突出显示的颜色是可配置的。
要定义ReSharper如何突出显示匹配分隔符,请使用 Environment | 上的突出显示匹配分隔符首选项 编辑| ReSharper选项的编辑器外观页面。
要指定颜色以突出显示匹配的分隔符,请转到Visual Studio选项(工具|选项),打开 环境| 字体和颜色 页面,然后为ReSharper Brace Outline 和/或 ReSHarper Matched Brace 项目选择所需的颜色 。
以下语言和技术支持 此功能 :
突出显示当前行
您可以选择使用可配置的颜色突出显示插入符当前所在的行。
默认情况下,禁用当前行的高亮显示。要启用它,请勾选ReSharper选项页面上的 突出显示当前行复选框,然后重新启动Visual Studio。
要指定颜色以突出显示当前行,请转到Visual Studio选项(工具|选项),打开 环境| 字体和颜色页面,然后为ReSharper Current Line Highlight项目选择所需的颜色 。
重新排列代码元素
ReSharper | 编辑| 重新排列Code
Ctrl+Shift+Alt + Up/Down/Left/RightReSharper允许您快速重新排列代码中的表达式,语句,类型成员和其他元素。
怎么运行的
要重新排列代码,请按下 Ctrl+Shift+Alt 要移动的代码元素或选区。如果移动元素是有意义的,ReSharper会向您显示可能的移动选项的工具提示。
如果您在没有选择的情况下调用此命令,ReSharper会自动选择可移动元素。有时做出两个选择。在这种情况下,一个选择以蓝色突出显示,另一个选择以黄色突出显示。例如,如果您通过函数参数调用此命令,ReSharper会做出两个选择:参数本身(您可以相对于其他参数向左或向右移动)以及整个函数,您可以相对于其他类型上下移动成员:
向上移动 和 向下移动 命令非常简单 - 它们可以将特定范围内的元素相对于此范围内的其他元素上下移动。例如,您可以在文件中上下移动类型,在类型中键入成员,在类型成员中或在复合语句中输入语句等。
如果当前元素在其作用域中第一个或最后一个,ReSharper将不允许您用up / down命令进一步移动它。向左移动 和 向右移动 命令有两个目的:
- 重新排列通常写在一行中的元素。例如,您可以移动左右属性,函数参数,表达式中的操作数,赋值语句的部分等。请注意,即使将这些元素写入多行,左/右命令也会应用于这些元素。
-
在直接跟随它的复合语句或区域内移动语句(向右移动)或将语句移动到复合语句或区域之外(向左移动)。
如果按下 Ctrl+Shift+Alt 并且ReSharper不选择任何内容,或者它没有向您显示带移动建议的工具提示,则当前元素或选择无法在不破坏编译的情况下移动到任何位置。
尽管ReSharper尝试不允许无效移动,但仍然有可能会中断逻辑或编译代码。请注意,ReSharper提供了许多重构,可以帮助您安全地重新排列代码,例如, 将Move Type移至Outer Scope重构 和 Change Signature重构。如果您的代码在移动代码元素后中断,请按下 Alt+Enter并检查可用的 快速修复。大多数情况下,您会在操作列表中找到正确的重构权限 。
适用案例
ReSharper允许您通过以下方式移动元素:
- 类型和类型成员。请注意,如果符号具有XML注释,则ReSharper将它们与符号一起移动。
- 在当前文件中或在包含声明中上下类型
- 在类型中上下键入成员
- 基本类型向左和向右
- 输入参数向左和向右
- 上下键入参数约束
- 属性左侧和右侧
- 声明和参数中的参数用于左右函数的使用(如果您为函数声明重新排序参数,ReSharper会建议 Change Signature重构 ,确保在函数的所有用法中更改参数。
- 上下设置属性和吸气剂
- 声明
- 赋值语句的部分左右
- 函数或复合语句内的语句向上和向下
- 从复合陈述(左)或紧随其后的复合陈述(右)
- 在开关语句中上下切换部分
- 从if-else,try-catch语句的一个子句或从一个开关段到另一个段的语句上下声明
- catch 一个try-catch语句中的子句向上和向下
- 上下复合语句的大括号(贪婪大括号)。要移动右大括号,请将脱字符号放在大括号外,按 Ctrl+Shift+Alt ,然后使用向上和向下箭头来包含当前复合语句后面的语句或将最后一个语句移到其外面。
- 打开或关闭类型或名称空间的大括号也可用作"贪婪大括号"。在这种情况下,它将包含/排除嵌套类型/成员/名称空间。
- 表达式
- 表达式左边和右边的操作数
- 集合和数组初始化中的元素左右
- 查询表达式中的子句向上和向下
- 其他元素
- 泛型类型/方法声明的类型参数
- 模板字符串中的参数向左和向右
- 插值字符串中的值
- 线条和C风格的评论上下
- #region 在另一个#region 块中 上下移动
- #region 和 #endregion 指令上下
- 在插入光标的文本文件中插入
-
上下选择一个文本文件
ReSharper还允许您 根据指定的布局自动重新排列类型成员。
重复行或选择
ReSharper | 编辑| 重复文本
Ctrl+D
ReSharper_DuplicateText创建与现有代码元素类似的代码元素(例如,新的方法重载或新的自动实现的属性)的一种方法是使用复制粘贴克隆现有元素,然后编辑克隆。
ReSharper可帮助您简化克隆部分 - 只需一个按键(Ctrl+D),克隆的代码就会在原始代码后面插入。
快速复制当前行或选择
-
如果您想克隆一条线,请在此线上设置插入符号。要克隆任意一段代码,请在编辑器中选择它。
要 选择一个逻辑代码块,按 Ctrl+Alt+Right 一次或多次; 要 选择当前的声明,按 Ctrl+Shift+[..
- 按 Ctrl+D 或选择 ReSharper | 编辑| 从主菜单中复制文本。或者,您可以按 Ctrl+Shift+A,在弹出窗口中开始输入命令名称,然后在那里选择它。
- 重复的行或多行选择插入到原始行或选择的下方; 重复的内联选择插入到原始的右侧。
-
如果您有重复的选择,选择将停留在克隆上。如有必要,您可以按 Ctrl+Shift+Alt,然后使用箭头键 将克隆移至所需的位置。
用字符串分割线
当你输入长文字时,ReSharper可以帮你分割线条并添加必要的引号和加号。
创建与现有代码元素类似的代码元素(例如,新的方法重载或新的自动实现的属性)的一种方法是使用复制粘贴克隆现有元素,然后编辑克隆。
按下 Enter 会正确拆分字符串,以便您的代码语法不会被破坏:
现在,如果删除 +标志,则字符串部分将重新组合在一起,而不用重复引号。
另一种分割字符串文字的方法是设置插入符号的位置,按下 Alt+Enter并选择 分割字符串。此 上下文动作还将添加必要的引号 +,但这两个部分都会停留在同一行。
连线
ReSharper | 编辑| 加入线
ReSharper_JoinLines使用ReSharper可以在当前行之后附加下一行,并将多个选定的行合并成一行,从而精确地排列空间。
要将插入行后的下一行追加到插入行的位置,或者将所有选定行连接到一行,请执行以下操作之一:
-
选择 ReSharper | 编辑| 加入 主菜单中的行。
-
如果您使用的是 IntelliJ IDEA / ReSharper 2.x键盘映射,请按 Ctrl+Shift+J。或者,您可以ReSharper_JoinLines在Visual Studio选项(工具|选项|环境|键盘)中为该命令分配所需的快捷方式 。
-
按下 Alt+Enter并开始输入"连接线"以使用转到操作功能调用该命令 。
添加和删除#区块
ReSharper可以帮助您快速添加,移动和删除#region代码中的块。
在编辑器中管理区域
在编辑器中,您可以快速地将当前选择与区域进行环绕。ReSharper将添加 #region和 #endregion指令,并将插入符号设置在可键入区域名称的位置。
您还可以使用移动代码元素功能以不同方式移动区域 :
- 您可以上下移动 #region和 #endregion指令,使区域包含相邻元素,或者使元素不在区域中。为此,请在要移动的指令上设置插入符号,然后按 Ctrl+Shift+Alt,然后使用向上和向下箭头键。
-
您可以在整个范围内上下移动整个区域。为此,请选择包括#region和 #endregion指令在内的整个区域 ,按 Ctrl+Shift+Alt,然后使用向上和向下箭头键。
要删除现有区域,请按 Alt+Enter并选择相应的 上下文操作。
请注意,您也可以 在更广的范围内应用此操作。例如,您可以使用它来删除整个解决方案中的所有#区块:
在文件结构窗口中使用区域
围绕类型和/或类型成员的区域显示在" 文件结构"窗口中。区域显示为围绕相应项目的框架。您可以展开/折叠区域以显示/隐藏其中的项目。
您可以从文件结构中将符号包装到一个区域中。为此,请选择要换行的成员(Ctrl - 单击要进行多选的项目),然后单击 工具栏上的带区域环绕 。
您可以通过点击 区域框右上角的十字图标来删除任何区域 。
要重命名区域,请双击其名称或按压 F2 它,然后键入新名称。
评论和取消注释代码
ReSharper | 编辑| 评论与线/块评论
Ctrl+Alt+/ / Ctrl+Shift+/
ReSharper_LineComment / ReSharper_BlockComment使用ReSharper,单个按键足以评论或取消注释代码。
用评论评论和取消注释
要使用行评论评论或取消评论代码,请按 Ctrl+Alt+/ 或选择 ReSharper | 编辑| 通过主菜单中的 线条评论进行评论
// Commented line in C# ...
如果没有选择,ReSharper将评论当前行,或者取消注释行是否有注释,并将脱字符移动到下一行。
根据第一列选项中的 不要缩进注释,注释将添加或不添加缩进。您可以分别为不同的语言配置此选项,例如对于C#,它位于 代码编辑|上 C#| 格式化样式| 选项卡,缩进, ReSharper选项的对齐页面。如果有选择,ReSharper将评论或取消注释选择跨越的所有行。即使部分选择了某一行,注释标记也会插入此行的开头。
取消注释任何行注释的另一种方法是在此行上设置插入符号,然后按 Alt+Enter并选择 取消注释。
评论和评论块评论
要使用块注释评论或取消注释代码,请按 Ctrl+Shift+/ 或选择 ReSharper | 编辑| 通过主菜单中的 块评论进行评论
/* Commented code block
in C# ... */
如果没有选择,ReSharper会在当前插入符后面的第一个空白处创建一个空白块注释。
如果插入符号位于块注释中,则该块未注释。如果有选择,ReSharper会在选择的开始和结尾添加块注释标记。脱字符移到块注释的末尾。
另一种评论任何代码块的方法是选择它,按 Alt+Enter并选择 评论选择。同样的方法可用于在块注释中取消注释代码 - 在块注释中的任意位置设置脱字符,然后按 Alt+Enter并选择 取消注释。
将符号信息复制到剪贴板
ReSharper提供了两个方便的命令来将符号信息复制到剪贴板:
-
如果频繁使用这些命令,则可以将快捷方式分配给相应的命令(请参阅标题下的命令别名),也可以使用 导航至操作命令(Ctrl+Shift+A)。
复制XML-Doc ID
ReSharper | 编辑| 将XML-Doc ID复制到剪贴板
ReSharper_CopyXmlDocIdToClipboard当您在任何符号(声明或用法)上调用此命令时,它会将其XML-Doc ID复制到剪贴板,这将在您的代码的XML文档中标识此符号。从其他符号的XML-doc注释中引用此符号时,您可以使用此ID。有关ID格式的更多信息,请参阅 处理XML文件(C#编程指南)。
例如,对于MyMethod声明 为的方法
namespace MyNamespace
{
class MyClass
{
void MyMethod(){}
}
}
XML-doc iD将会 M:MyNamespace.MyClass.MyMethod
复制完全限定的名称
ReSharper | 编辑| 将完全限定名称/源浏览器URI复制到剪贴板
ReSharper_CopyFqn当您在任何符号(声明或用法)上调用此命令时,它会将其完全限定名称 或其任何前缀部分复制到剪贴板 :
在不同情况下,您可能需要符号的完全限定名称,例如在使用反射时。
如果您使用 JetBrains Upsource和/或 基于Roslyn的源浏览器在线浏览您的源代码,则可以使用此命令复制将在浏览器中查找当前符号的URI。
如果您想使用这些附加功能,请配置您在Environment |上使用的服务的基本URI ReSharper选项的搜索和导航页面。从剪贴板历史中粘贴项目
ReSharper | 编辑| 糊…
Ctrl+Shift+V
ReSharper_PasteMultiple使用ReSharper,您可以访问剪贴板历史记录,并快速粘贴复制到剪贴板的任何近期项目。一旦启动Visual Studio并在关闭它时清除历史记录,ReSharper会开始将复制的项目记录到其剪贴板历史记录中。
从剪贴板历史记录粘贴项目
- 将插入符号放入插入最近复制项目的位置。
- 按 Ctrl+Shift+V 或选择 ReSharper | 编辑| 粘贴... 从主菜单。或者,您可以按 Ctrl+Shift+A,在弹出窗口中开始输入命令名称,然后在那里选择它。
- ReSharper将向您显示自Visual Studio启动以来复制的项目列表。
- 执行以下操作之一:
- 从复制的元素开始输入任何子字符串以显示包含此子字符串的项目。
- 使用向上和向下键浏览项目,在弹出窗口中预览它们。
- 要在对话框中研究剪贴板中的项目,请单击 在模式对话框中显示 ,按 数字小键盘上的Shift+Enter 或 +。
-
如果您选择在对话框中研究剪贴板项目,则可以通过按下旁边显示的数字或字母来粘贴任何项目。要查看复制块的全文,可以使用箭头键在它们之间切换或单击它们。要粘贴所选项目,请按 Enter或点击 粘贴。
智能粘贴
ReSharper可以帮助您自动转义复制/粘贴代码的文本中的非法字符。
如果粘贴的文本包含对当前上下文非法的字符,则ReSharper将显示一个弹出窗口,提示转义所有非法字符。要接受此建议,请按 Alt+Enter或按 Esc以拒绝它。例如,当您将一段包含双引号的文本粘贴到字符串文字中时,ReSharper建议自动转义所有引号:
另一个例子是将一段带有泛型的代码粘贴到XML文档标签中:ReSharper将用相应的转义序列替换尖括号。
CamelHumps
CamelHumps是一项功能,可识别根据CamelCase组成的化合物名称 部分,其中每部分以大写字母开头,或者部分化合物名称由下划线分隔。您只能键入这些部分的首字母,ReSharper会自动查找具有匹配名称的项目。
搜索命令中的CamelHumps
CamelHumps总是适用于所有 按名称导航的 命令,即 搜索到处/转到类型, 转到文件, 转到文件成员和 转到符号。键入名称部分的首字母并获取匹配项目列表非常方便:
您可以键入大写或小写字母:
ReSharper还可以按任意顺序查找匹配查询中字母的CamelCased项目:
当然,如果在查询中有两个字母及其顺序相匹配的项目,这些项目将放置在结果列表中较低的位置。
CamelHumps编辑协助行动
CamelHumps还可以用于 Visual Studio中ReSharper覆盖的Extend / Shrink Selection和其他输入辅助命令:
- 将选择扩展到下一个/上一个字 (Ctrl+Shift+Right Arrow / Ctrl+Shift+Left Arrow)
- 转到下一个/上一个单词 (Ctrl+Left Arrow / Ctrl+Right Arrow)
- 从单词的开头删除文本到插入符号 (Ctrl+Backspace)
-
从插入符号中删除文本到词尾 Ctrl+Delete
启用CamelHumps输入辅助操作
- 选择 ReSharper | 选择 在主菜单。
- 转到 环境| 编辑| ReSharper选项的编辑器行为页面。
- 使用 使用CamelHumps 复选框,在输入帮助功能中切换CamelHumps支持。
-
单击 保存 以应用修改并让ReSharper选择保存它们的位置,或使用保存到 下拉列表将修改保存到特定的设置图层 。有关更多信息,请参阅 管理和共享resharper设置。
如果启用了CamelHumps,则扩展/收缩选择命令会考虑化合物名称的某些部分。假设您已将脱字号放在复合名称的中间,其中有几个以大写字母开头的部分:
使用CamelHumps,Ctrl+Alt+Right 第一次按 选择当前部分的单词:只有在第二次按下此按键后,ReSharper才会选择整个单词:所有后续的印刷机都照常处理。
随着 使用CamelHumps 选项启用,Visual Studio的"首/下一首字"(Edit.WordNext/ Edit.WordPrevious)和"扩展选择,以一首/下一字"(Edit.WordNextExtend/ Edit.WordPreviousExtend)命令也以不同的方式工作。当您按 Ctrl+Right/Left,Arrow 或者 Ctrl+Shift+Right/Left,Arrow插入符号移动时,可以选择/不选择下一个/上一个字符,该字符用于分隔当前单词中复合名称的各个部分,并且仅在单词的最后一个部分后面,才会移至下一个/上一个单词。
还有一种方法可以让'Next / Previous Word'和'Extend selection to Next / Previous Word'这两种行为(尊重和忽略骆驼案例),即默认的Visual Studio快捷方式(Ctrl+Right/Left,Arrow和 Ctrl+Shift+Right/Left,Arrow)将忽略骆驼案例和一些自定义快捷方式将适用于骆驼案件。
要对其进行配置,请关闭 ReSharper设置中的 使用CamelHumps选项,然后在Visual Studio选项(工具|选项|环境|键盘)中将自定义快捷键分配给以下命令:
- ReSharper_HumpNext - 将脱字号移至下一个峰
- ReSharper_HumpPrev - 将脱字号移到前面的驼峰
- ReSharper_HumpNextExtend - 将选择延伸至下一个峰
-
ReSharper_HumpPrevExtend - 将选择延伸到前一个驼峰
请注意,通过此设置( 禁用使用CamelHumps选项), Extend / Shrink Selection 命令将忽略CamelHumps。
CamelHumps在代码完成中
默认情况下,在代码完成 功能中也启用了CamelHumps支持 。也就是说,您可以开始输入符号的CamelCase缩写,完成弹出窗口将显示匹配的项目。如有必要,您可以禁用此行为。
改变代码完成过滤与CamelHumps一起使用的方式
- 在主菜单中,选择 ReSharper | 选项。
- 转到 环境| 智能感知| ReSharper选项的" 完成行为"页面。
- 使用标识符中间的 匹配 复选框可以为完成功能切换CamelHumps支持。
-
单击 保存 以应用修改并让ReSharper选择保存它们的位置,或使用保存到 下拉列表将修改保存到特定的设置图层 。有关更多信息,请参阅 管理和共享resharper设置。
INotifyPropertyChanged支持
该 INotifyPropertyChanged接口广泛用于.NET应用程序,以便在属性更改其值时发送通知。ReSharper提供了一组帮助您实现此界面的功能。
ReSharper帮助实施以下框架的财产变更通知:
-
MVVM Light(WPF,Silverlight,Windows Phone,通用应用程序)
-
Caliburn.Micro(WPF,Silverlight,Windows Phone,通用应用程序)
-
棱镜(WPF; Silverlight,Windows Phone)
-
Catel(WPF,Silverlight,Windows Phone,WinRT,ASP.NET MVC)
-
MVVMHelpers(WPF 3和4,仅支持lambda表达式)
首先,ReSharper检测到该 INotifyPropertyChanged 接口正在被使用,并提供一个特殊的快速修复程序来实现所需的实施。
应用快速修复程序后,ReSharper会生成属性更改通知的方法,并提示您为此方法提供名称。
如上图所示,生成的方法使用 [NotifyPropertyChangedInvocator]属性进行标记,该 属性支持完全支持 INotifyPropertyChanged接口,其中包括向属性添加更改通知,字符串文本中属性名称的验证和完成,导航到属性,支持重构和代码生成。建议 在生成实现之前将ReSharper注释属性添加到项目中。
如果类中有一些不通知变化的属性,则可以使用相应的上下文动作 (只有在通知方法使用[NotifyPropertyChangedInvocator] 属性进行修饰时才可用)轻松地将它们转换为包含更改通知 的 属性:
当您为现有字段生成属性并且有一个使用该[NotifyPropertyChangedInvocator] 属性装饰的方法时 ,您将能够 在" 生成" 对话框中选择" 通知属性更改"复选框 以获取包含更改通知的属性:
此外,ReSharper为 传递给 方法的参数 提供 代码检查和 代码完成OnPropertyChanged。
在.NET Framework 4.5项目中实现INotifyPropertyChanged时,ReSharper利用Caller Info属性。它还有助于迁移到基于CallerMemberName的实现,方法是突出显示冗余参数并提供 快速修复。
项目级援助
ReSharper包含一组项目级功能,这些功能在处理大型解决方案时特别有用。
在这个部分:
项目级重构
ReSharper包含一组项目级功能,这些功能在处理大型解决方案时特别有用。 大部分ReSharper重构都 以类型和类型成员为目标。当你执行任何这些重构时,总是考虑整个解决方案。
调整命名空间
调整名称空间
ReSharper | 重构| 调整名称空间...
ReSharper_RefactoringsAdjustNamespaces此命令是一个批量修复程序,可帮助您在任何范围内将名称空间与文件夹结构进行同步,这可能与您的整个解决方案一样大。也就是说,如果某个文件中的名称空间与项目结构中文件的位置不对应,则会根据文件位置重命名该名称空间,并更新所有引用修改的名称空间的使用指令。
使名称空间与项目结构同步
- 在解决方案资源管理器中,选择要同步名称空间的节点。
- 执行以下操作之一:
- 按 Ctrl+Shift+R ,然后选择 调整名称空间
- 右键单击并选择 Refactor | 调整 上下文菜单中的命名空间。
-
选择 ReSharper | 重构| 调整 主菜单中的 命名空间...。
该 调整命名空间 对话框打开。
- 检查名称空间不对应于项目结构的文件列表,并选择要同步名称空间的文件。
- 要应用重构,请单击 下一步。
-
如果没有冲突,则重构立即执行。如果存在具有相同名称的类型或委托,这些类型或委托在重构后进入相同的名称空间,则该向导会显示一个包含冲突的页面。您可以双击冲突以导航到相应的声明并修复它们。
ReSharper还提供了检测不匹配名称空间的 代码检查。默认情况下,如果文件中存在单个名称空间声明并且它不符合项目结构中的文件位置,则检查会报告警告。
您可以通过按下Alt+Enter并使用相应的 快速修复来同步不匹配的命名空间 :您也可以在更大范围内应用快速修复 ,这将为您提供与执行重构相同的结果:
将类型移入匹配文件
ReSharper | 重构| 将类型移至匹配文件中...
ReSharper_MoveIntoMatchingFiles此命令是一个批量修复程序,可帮助您组织类型和/或委托,以便每个类型/委托定义位于具有匹配名称的单个文件中 - 也就是说,如果在单个文件中声明了多个类型/委托,为每个声明创建文件; 如果文件名与它包含的单个类型/委托声明不匹配,那么该文件将被重命名。
所有需要的导入都添加到新文件中; 所有不再需要的导入都将从原始文件中删除。
将类型移入匹配的文件
- 在解决方案资源管理器中,选择您想要将类型组织成匹配文件的节点。
- 执行以下操作之一:
- 按 Ctrl+Shift+R ,然后选择 将类型移入匹配文件
- 右键单击并选择 Refactor | 在上下文菜单中将类型移动到匹配文件中。
-
选择 ReSharper | 重构| 将类型移动到匹配文件... 在主菜单中。
" 将类型移入匹配文件" 对话框将打开。
- 选择应该移入匹配文件的声明种类。
- 要应用重构,请单击 下一步。
-
如果没有冲突,则重构立即执行。如果现有文件与新创建或重命名的文件发生冲突,向导将显示一个包含冲突的页面。您可以双击冲突以导航到相应的声明并修复它们。
您也可以使用上下文操作将单个类型从编辑器中移动到匹配的文件中, 或者在更大范围内应用此操作 (这会为执行重构提供相同的结果):
不匹配的类型和文件名也可以通过上下文操作从编辑器中修复:
您也可以使用移动类型到另一个文件重构将任何类型移动到新的或现有的文件 。
删除未使用的参考
该命令允许清理源代码中没有实际用法的项目和程序集引用。您可以将此命令应用于项目,解决方案文件夹或整个解决方案。在删除完成之前,您将能够看到所有将要删除的引用和。如有必要,保留你想保留的那些。
当您删除项目和程序集引用时,ReSharper还会删除引用已删除程序集中名称空间的所有冗余名称空间导入指令。
删除未使用的参考
- 在解决方案资源管理器中,选择一个或多个项目,解决方案文件夹或解决方案的根节点,或者选择项目的 引用节点。
- 执行以下操作之一:
- 右键单击选择并选择 Refactor | 在上下文菜单中删除未使用的引用。
-
按 Ctrl+Shift+R,然后选择 删除未使用的参考。
" 删除未使用的引用" 对话框将打开。
- 源代码中没有实际用法的所有引用都显示在按项目分组的树视图中。默认情况下,所有引用都被选中删除。如有必要,请取消选择您想保留的参考。
- 单击 下一步 删除选定的参考。
-
还有两种清洁项目和装配参考的方法。
- 您可以调用 Optimize References命令,该命令可让您分析所有引用并删除未使用的引用。
-
您可以 在解决方案资源管理器中展开" 引用"节点,选择要删除的引用并调用 安全删除重构,它会静静地除去未使用的引用,或打开一个对话框显示如何以及在何处使用所选引用。
探索项目层次结构
ReSharper | 检查| 显示项目层次结构
ReSharper_ProjectHierarchyBrowse此功能可帮助您分析解决方案中特定项目的引用和引用项目和程序集。
查看项目层次结构
- 在解决方案浏览器中选择一个项目。
- 在主菜单中,选择 ReSharper | 检查| 显示项目层次结构 或右键单击所选项目并 在上下文菜单中选择 显示项目层次结构。
- 在出现的Hierarchy窗口的新选项卡中 ,您可以浏览层次结构或项目引用:
- 要在当前解决方案中引用项目和程序集以及引用选定项目的项目之间切换层次结构,请使用相应的工具栏按钮( 引用项目 / 引用项目 )
- 您可以进一步探索层次结构中的每个项目或程序集:
- 单击 基于此 以基于选定的项目或程序集重建层次结构。
- 双击任何项目引用以在解决方案资源管理器中找到它。
-
查找代码取决于参考模块
ReSharper | 检查| 显示项目层次结构
ReSharper_FindDependentCode此功能可帮助您分析解决方案中特定项目的引用和引用项目和程序集。
在搜索结果中,您将看到代码中模块类型或类型成员出现的所有位置。
如果您搜索依赖于引用模块的代码,ReSharper将在其引用的项目中查找模块符号的用法。如果您搜索依赖于项目的代码,ReSharper会在整个解决方案中查找项目符号的用法。
查找依赖于模块的代码
- 在解决方案资源管理器的项目 的引用节点中选择一个项目或程序集引用 。
- 执行以下操作之一:
- 在主菜单中,选择 ReSharper | 查找| 查找代码取决于模块。
- 在所选项目上单击鼠标右键,然后 在上下文菜单中选择 "依赖模块查找代码"。
-
分析和优化项目参考
ReSharper | 查找| 优化参考...
Ctrl+Alt+Y
ReSharper_OptimizeReferences此功能可帮助管理现有项目/组件参考,浏览所引用的项目/组件的使用情况,并删除未使用的参考。您可以在任何单个项目上调用此功能,并使用" 分析参考"窗口分析和优化项目参考。
分析项目参考
" 分析参考" 工具窗口显示当前项目中的项目/装配参考,并让您了解如何使用参考。要探索特定程序集,名称空间或类型的用法,可以按类型对它们进行过滤并对它们进行分组。
该 符号图标, 可以帮助你各种不同的符号区分。每种用法都与行号和列一起显示; 不同的图标表示不同类型的用法,如读,写,属性或调用用法。您可以双击任何用法直接导航到源代码。
分析项目参考
- 在解决方案资源管理器中,选择要分析的项目或其" 参考" 节点。
- 执行以下操作之一:
- 选择 ReSharper | 查找| 优化参考...
- 右键单击选择并 在上下文菜单中选择 优化参考。
- 按 Ctrl+Alt+Y。
-
使用Analyze References窗口中的控件 来浏览项目引用。
删除未使用的参考
清理项目引用最简单的方法是单击 工具栏上的" 删除所有未使用的引用 "。如果您想要保留一些未使用的引用或删除一些已使用的引用(并手动解决后面的编译错误),则可以进行相应的选择并单击" 删除所选引用" 。
当您删除项目和程序集引用时,ReSharper还会删除引用已删除程序集中名称空间的所有冗余名称空间导入指令。
所有Visual Studio项目都必须引用 mscorlib 并从Visual Studio 2010开始 System.Core 组件。这些程序集标有图钉 图标,您不能删除这些引用。
编译器所需 的引用(不管是否使用它们)将显示在编译器 组所需的 引用中。本组中的参考文献通常具有"相关用途",即隐式(非直接)用法。在最简单的情况下,相关用法是由类型的层次结构引起的。也就是说,如果您使用某种类型,则必须引用包含该类型超类型的所有程序集。
NuGet包与相应的图标一起显示 。当移除NuGet包时,ReSharper将使用NuGet卸载机制。
还有两种清洁项目和装配参考的方法。
- 您可以在项目上或解决方案资源管理器中的引用节点上调用 Remove Unused References命令 。
-
您可以 在解决方案资源管理器中展开" 引用"节点,选择要删除的引用并调用 安全删除重构,它会静静地除去未使用的引用,或打开一个对话框显示如何以及在何处使用所选引用。
保留对隐式加载的程序集的引用
某些项目类型隐式使用引用,这意味着这些引用仅在运行时使用。即使这些引用没有代码依赖关系,也无法安全地删除这些引用。
如果您仍想使用ReSharper清理功能(" 分析引用"窗口中的" 删除所有未使用的引用"按钮 和" 删除未使用的引用"重构),则需要标记隐式加载的程序集。
标记隐式加载的程序集
- 打开 分析参考窗口
- 在 未使用的引用部分中,找到您需要保留的隐式使用的引用。
- 右键单击引用并选择以下选项之一:
- 在运行时使用标记引用 - 从当前项目中的清除中排除选定的引用
- 标记整个解决方案在运行时使用的引用 - 在解决方案中的所有项目中排除所选参考的清除
-
ReSharper会将有关隐式使用引用的信息保存在其 分层设置中 - 存储在项目或解决方案的 * .DotSettings.user文件中。
查找,浏览和安装NuGet软件包
借助ReSharper,您可以在NuGet软件包库中搜索类型或名称空间,检查匹配的软件包,分析其内容并安装所需的软件包 - 所有这些都不需要离开Visual Studio。
查找NuGet包
开始搜索的最简单方法是使用 可用于未解析名称空间的相应 上下文操作:
...和类型:
在任何情况下,ReSharper都会打开 NuGet浏览器窗口,您将在其中看到所有包含所需类型或名称空间的包。
该 的NuGet浏览器窗口也可以从主菜单中打开 ReSharper的| Windows | NuGet浏览器,你也可以在那里开始搜索。根据你在找什么,单击 类型或 命名空间的窗口工具栏上,然后输入搜索字段的类型或命名空间。
如有必要,可以使用工具栏按钮改进搜索:
- 大小写敏感的 -默认情况下,搜索不区分大小写。单击此按钮可将搜索查询的大小写入帐户。
- 预发布 - 默认情况下,搜索结果只包含发布版本的软件包。点击此按钮可将预发布版本添加到搜索结果中 - 所有预发布软件包将标有特殊图标:
-
任何版本 - 默认情况下,搜索结果仅包含匹配包的最新版本。点击此按钮可显示所有可用版本 - 除最新版本之外的所有版本都将标记相应的警告。
探索一个NuGet包
要详细了解任何找到的软件包,请点击 该软件包旁边的更多 。ReSharper将显示软件包的描述和其他细节。如有必要,您可以点击 Package id链接在NuGet网站上打开包页面 。要隐藏包详细信息,请单击" 更少" 。
您还可以研究任何找到的包中的名称空间和类型的层次结构。为此,请单击 包旁边的浏览 。
安装NuGet包
只要找到所需的软件包,可以通过单击其旁边的安装来 安装 它。如果您已在NuGet Browser窗口中开始搜索 ,则必须选择安装软件包的项目。如果您的搜索源于编辑器中的上下文操作,则只需 在确认对话框中单击 安装即可在当前项目中安装该软件包。但是,您始终可以通过单击选择其他项目来选择任何其他 项目。
建筑方案
ReSharper允许您使用多个并行进程逐步构建您的解决方案。您可以使用ReSharper Build来替代本机Visual Studio的构建管理。
请注意,ReSharper不会取代MSBuild - 您的项目仍然正常构建。不同之处在于不需要更新的项目不会被重建。
开始ReSharper构建
默认情况下,ReSharper Build被禁用。要启用它,请执行以下操作之一:
-
转到 工具| ReSharper构建| ReSharper选项的常规页面,并在Build Engine 部分选择ReSharper Build 。
-
打开 Build&Run窗口 (ReSharper | Windows | ReSharper Build),然后点击 Enable ReSharper Build。
ReSharper Build的启用/禁用状态保存在 分层设置中,因此您可以在每个解决方案的基础上使用它。
当启用ReSharper Build时,有几种方法可以构建您的解决方案:
-
使用任何Visual Studio 生成命令 - 例如 Build | 构建解决方案 (Ctrl+Shift+B) - 所有这些命令和快捷键都被ReSharper Build覆盖。
-
单击 Build 或者在ReSharper Build&Run 窗口工具栏的下拉菜单中选择其他可用的构建命令 。
-
要构建,重建或清理特定项目,请在构建和运行窗口中右键单击它,然后在 上下文菜单中选择相应的命令。
ReSharper还提供了它自己的NuGet恢复器实现,它适用于所有Visual Studio版本。默认情况下,ReSharper会确保在每次构建之前恢复所有相关的NuGet包,但您可以通过清除Tools | Tools中的相应复选框来禁用它 。构建| ReSharper选项的一般页面。如果自动恢复被禁用,您可以通过单击Build&Run窗口工具栏上的 Restore NuGet软件包 来手动运行它 。
如果在此选项页面上启用,NuGet恢复器会将日志写入输出。您还可以在工具|上配置日志消息级别并查看恢复的日志信息ReSharper选项的NuGet Restorer页面。构建过程
当您第一次运行ReSharper Build时,它会根据您的配置使用多个并行进程构建所有项目 。所有构建管理都是在流程外发生的,所以Visual Studio在构建运行时仍然保持响应。
下次您构建解决方案时,ReSharper只会构建已更改的项目。如果更改影响其他项目中使用的公共类型,则也会重建相关项目。
ReSharper Build为MSBuild任务,目标和项目维护输入和输出的依赖关系图,并有效监视文件系统的变化。当你开始构建时,ReSharper Build已经知道时间戳是否是最新的,而不必调用MSBuild:如果时间戳是最新的,项目将被跳过。
默认情况下,ReSharper Build使用与Visual Studio设置中指定的相同的MSBuild版本,并且在6个进程中并行运行。如有必要,您可以明确指定MSBuild版本并更改Tools |上的进程数 ReSharper构建| ReSharper选项的一般页面。
构建过程和概要可以在 构建和运行窗口中看到:
您的解决方案中的所有项目都以网格形式显示,每个项目都有特定的颜色。您也可以将鼠标悬停在项目上以显示解释状态的工具提示。颜色代表项目构建状态:
-
深灰色 - 项目已清理或从未建成。
-
灰色 - 该项目不是基于以下两个原因之一而构建的:将其 从解决方案构建中排除,或者只针对特定项目运行构建,而不构建不相关的项目。
-
浅蓝色 - 该项目是在上一次运行中建立的,没有任何更改。
-
蓝色 - 该项目是在上一次运行中建立的,没有任何更改; 它引用的项目只有私人更改。
-
绿色 - 项目发生了变化,或者其中一个依赖项目发生了公共更改,然后在没有任何警告的情况下成功重建。
-
黄色 - 项目发生了变化,或者其中一个依赖项目发生了公共更改,然后成功重建并发出警告。
-
红色 - 项目发生了变化或者其中一个依赖项目发生了公共更改,则项目构建失败。
如果您需要取消当前版本,请选择 ReSharper | 构建| 在主菜单中取消生成。
分析构建结果
一旦构建完成,ReSharper会在构建结果窗口中显示构建错误(以及可选的警告) 。
默认情况下,只有存在构建错误时才会显示结果。如有必要,可以使用 Tools |上的Show build results ...选择器 ReSharper构建|ReSharper选项的一般页面显示带有警告的结果,始终显示结果或从不显示结果。
在 Build Results窗口中,您可以通过以下方式之一进一步研究构建输出:
-
选择一种方便的方法,使用分组依据选择器中的多个选项中的一个对结果进行 分组。
-
如果存在构建错误,则只有这些错误出现在窗口中。如果您还想查看编译警告,请单击 工具栏上的显示警告 。
-
使用上 一个 / 下一个 按钮或 Shift+F8/ F8快捷方式在构建消息之间导航。
-
要预览产生错误或警告的代码,请单击 显示预览 或按 Ctrl+P。在预览窗格中,可以位于窗口的左侧或底部,错误和警告用红色或蓝色波浪突出显示。
-
双击任何错误或警告以导航到编辑器中相应的代码行。
配置ReSharper构建
您可以在ReSharper |下的ReSharper选项页面上配置ReSharper Build 选项| 工具| ReSharper构建。
从构建中排除项目
如果您在构建解决方案时不需要构建某些项目,则可以排除它们以缩短构建时间。为此,请转至 工具| ReSharper构建|ReSharper选项的启发式页面并标记您想要排除在永远不应该构建的项目 部分的项目或解决方案文件夹 。您可以使用本节中的搜索框来过滤解决方案树,以仅显示匹配的项目。
请注意,即使您 在"解决方案资源管理器"中调用了这些项目的" 生成"命令,也无法构建排除的项目 。
排除项目意味着即使源文件过时或引用的项目具有公共API更改,它也不会被重建。这是非常激烈的,并且可能导致未捕获的编译错误,但可以用于临时排除编译速度慢的项目,并且不会用于当前的开发任务。它类似于在Visual Studio中卸载项目以使其不能编译,但源文件仍可供ReSharper使用,以允许导航和重构。我们建议在提交源代码控制或使用解决方案范围分析之前重新启用和重新构建 在输入时显示编译错误。
强制构建特定的项目
如果之前构建成功,ReSharper Build不会构建项目,并且自从他们之后没有任何更改。如果您需要独立于其中的更改来构建一些项目,则可以强制构建它们。为此,请标记项目或解决方案文件夹,您要强制生成 项目中应始终建立 部分。您可以使用本节中的搜索框来过滤解决方案树,以仅显示匹配的项目。
将项目标记为"始终构建"会告诉ReSharper Build永远不会将启发式应用于此项目,而是始终将其传递给MSBuild。这并不意味着项目总是会被重新编译和重新编译,但这意味着MSBuild总是被调用 - MSBuild仍然会检查时间戳并且可能执行增量构建。这对于具有ReSharper Build无法跟踪的自定义构建步骤的项目非常有用(尽管将自定义构建步骤重写为支持增量构建的适当MSBuild目标会更好 )。
可视化设置
默认情况下,当你启动ReSharper构建时, 构建和运行窗口就会启动,构建进度也会显示在Visual Studio状态栏中。如有必要,您可以在工具|上配置此行为 ReSharper构建| ReSharper选项的一般页面。
受支持的ReSharper Build的项目类型和限制
ReSharper Build支持大多数.NET项目类型和基于MSBuild的语言(C#,VB.NET,F#,C ++),包括.NET Core项目。但是,有以下限制:
-
非MSBuild项目。ReSharper构建不能用于不是基于MSBuild的项目类型。这包括网站(基于文件夹的项目,而不是MVC Web应用程序),WinJS应用程序和DNX应用程序。如果解决方案中有这些类型的项目,则整个解决方案构建将回退到标准的MSBuild构建过程。
-
自定义构建步骤。通常,自定义构建步骤(包括C ++项目中的构建步骤之前和之后)等同于调用批处理文件,并执行多个命令行来将文件复制到输出目录。就ReSharper Build而言,这是一个黑匣子 - 它不知道自定义构建步骤中发生了什么,因此无法跟踪输入和输出。此外,如果项目被跳过,构建步骤将不会运行,这可能会导致构建问题(这是默认情况下禁用ReSharper Build的主要原因)。
但是,只要自定义目标和任务支持增量构建,自定义MSBuild目标和任务就可以与ReSharper Build 配合使用,并且可以监视时间戳更改的输入和输出列表。强烈建议将天真的自定义构建步骤转换为自定义目标,以便使用ReSharper构建获得良好结果。
如果无法替换自定义构建步骤,则可以将该项目添加到应该"始终构建"的项目列表中,而不应用启发式方法,这意味着它们始终传递给MSBuild,并且MSBuild的标准增量构建过程将运行。这可以在工具|上进行配置 ReSharper构建| ReSharper选项的启发式页面。
使用运行配置
ReSharper | 工具| 运行配置...
Ctrl+Shift+Alt+R
ReSharper_RunConfigSettingsReSharper可帮助您创建,管理和执行解决方案的多个运行配置。运行配置允许您运行或调试项目,静态方法或任何可执行文件。
弹出"运行配置"
您可以使用" 运行配置"弹出窗口以任何方式执行运行配置以及管理它们 。要打开弹出窗口,请按 Ctrl+Shift+Alt+R 或选择ReSharper | 工具| 从主菜单 运行配置...。
弹出窗口显示所有现有的运行配置。活动的运行配置以粗体突出显示。
在ReSharper Build&Run中运行配置
您也可以在Build&Run窗口中执行运行配置 。
活动运行配置显示在窗口工具栏上的组合框中,当您展开组合框时,您将具有与" 运行配置"弹出窗口中类似的控件 。此外,您可以使用工具栏按钮来运行或调试活动配置,无论是否重建。
主动运行配置
在所有运行配置中,一个总是被设置为"主动"。当您按下F5或选择 调试|时,将激活配置 从主菜单开始。有一个默认存在的单一运行配置(VS启动),您不能删除。该配置执行在Visual Studio中配置的启动项目。最初,它被设置为活动配置。
只要您 创建新的运行配置,新创建的配置就会自动激活。
要将另一个运行配置设置为活动状态,请在Run Configurations弹出窗口中选择它 ,然后选择 Configure | 选择。
重要
ReSharper会覆盖Visual Studio的 Start和 Start Without Debugging 命令(可在 Debug | Start / Start Without Debugging菜单或 F5/ Ctrl+F5快捷键中找到)来执行ReSharper的活动配置。如果您需要返回到Visual Studio的配置,请在 Run Configurations弹出窗口中选择 VS Startup。运行配置的类型及其偏好
ReSharper允许您使用三种不同类型的运行配置。每个配置都通过名称进行标识,并且具有特定于其类型的多个属性。
启动项目
使用此配置类型,您可以运行或调试解决方案中的任何可执行项目。对于包含多个可执行项目的大型解决方案,这可以替代在解决方案资源管理器中搜索项目并将您想要执行的项目设置为启动项目。
静态方法
此配置类型允许您运行或调试任何不带参数的公共静态方法。您可以使用这种类型的配置来创建静态方法,以运行或调试代码库中的任何算法或子系统。如有必要,您可以使用控制台进行交互式执行。
对于这种类型,您需要提供方法的全名(即 Project.Class.Method)和可选的工作目录,体系结构,CLR(.NET Framework)版本以及要在执行前构建的项目。
请注意,您可以 使用临时运行配置来 执行静态方法。
可执行文件
使用此配置类型,您可以运行或调试任何可执行文件。如果您选择调试命令,ReSharper将运行可执行文件,然后将Visual Studio附加到相应的进程。此配置类型可帮助您创建复杂的执行设置(例如,如果您正在为另一个程序开发插件)。
对于这种类型,您需要指定目标可执行文件以及可选的工作目录,命令行参数以及是否在执行之前构建特定项目或整个解决方案。
创建和编辑运行配置
创建新运行配置的通用方法是使用" 运行配置"弹出窗口 (Ctrl+Shift+Alt+R)。
创建任何类型的运行配置
- 在运行配置弹出窗口中 选择 添加 , 然后选择要创建的配置类型(可执行文件,静态方法或启动项目)。 如果要为项目创建运行配置,则可以在解决方案资源管理器中右键单击该项目,然后选择 创建运行配置。
- 在打开的对话框中,为配置指定名称和 首选项,然后单击 确定
-
新创建的配置已保存并变为 活动状态。您可以按下 F5或单击 工具栏上的运行来执行它。
对于静态方法,您还可以在编辑器中快速创建运行配置。
为静态方法创建运行配置
- 将插入符号设置为不带参数的公共静态方法的声明。
- 按下 Alt+Enter或点击 左侧的 动作指示器。
- 在打开的动作列表中,选择 Debug ,然后选择带省略号的任何项目(例如 Run ...)
- 在打开的对话框中,ReSharper会根据所选方法自动填充所有配置首选项。如有必要,您可以更改配置名称和其他首选项。
-
单击 Save&Execute创建新配置,并以您在步骤3(运行/调试,带有/不带建筑物)上选择的方式执行。
或者,您可以单击" 执行"来运行/调试配置而不保存。如果要创建现有运行配置的副本,请在Run Configurations弹出窗口中选择它 ,然后选择 Configure | 重复。在打开的对话框中,为复制的配置指定一个新名称,根据需要更改任何首选项,然后单击 确定完成。
要修改现有运行配置的属性,请在运行配置弹出窗口中选择它 ,选择 配置| 根据需要编辑和修改配置的属性。
要删除运行配置,请在Run Configurations弹出窗口中选择它 ,然后选择 Configure | 删除。
对于静态方法,您可以直接从编辑器编辑,复制和删除关联的运行配置。您可以识别一个静态方法,该方法通过其左侧的修复操作指示符运行配置 。单击该指示器或按 Alt+Enter,然后在配置项目下选择编辑,重复或删除操作 。
执行运行配置
执行活动配置
要运行/调试 活动配置,请按 Ctrl+F5/ F5 或选择 Debug | 无需调试即可开始/ 在主菜单中启动。
默认情况下,项目/解决方案被重建。您也可以在不重建的情况下执行活动配置。要做到这一点,按下 Ctrl+Alt+F5 即可在没有建筑物的Alt+F5 情况下运行或 进行调试。
如果您更喜欢在没有构建的情况下执行配置,则可以更改默认行为。为此,请在" 运行配置"弹出窗口 ()中选择" 不要默认生成 "Ctrl+Shift+Alt+R。选择此选项时,使用 Ctrl+F5/ F5 执行没有构建的活动配置,以及 Ctrl+Alt+F5/ Alt+F5 如果要在执行前重建项目/解决方案。
执行其他配置
您可以使用" 运行配置"弹出窗口 (Ctrl+Shift+Alt+R)执行任何现有配置 。为此,请在弹出窗口中选择所需的配置,然后选择正确的运行/调试命令。要执行Visual Studio的配置,只需在弹出窗口中 选择VS Startup即可
为静态方法执行运行配置
ReSharper允许你执行任何不带参数的公共静态方法。您可以使用此方法设置插入符号,然后按 Alt+Enter,选择" 调试" ,然后选择所需的运行/调试命令。在执行开始之前,您会看到一个对话框,您可以在其中自定义执行参数。单击执行以执行一次该方法,如果要重新使用此配置,请 单击" 保存并执行"。
如果静态方法具有关联的运行配置,则ReSharper会在其左侧显示一个固定的动作指示符 。在这种情况下,执行该方法时不显示对话框。
将调试器附加到运行配置
如果您需要调试运行配置,则可以立即以调试模式启动它。但是,如果使用Run或 Run without Building命令执行运行配置 ,则可以稍后随时连接。
如果您有一个或多个运行配置在运行,您可以通过在 运行配置弹出窗口 ()中选择附加到[配置名称]来附加到正在运行的进程 。ReSharper会自动将Visual Studio切换到调试模式并附加到所选运行配置的进程,从而允许您中断它的执行,步骤等。Ctrl+Shift+Alt+R
共享运行配置
默认情况下,您创建的所有运行配置均保存在ReSharper 分层设置的"解决方案个人"层中 。
如果您希望与使用相同解决方案的团队成员共享一些运行配置,则可以将这些配置移至"解决方案团队共享"层。为此,请在Run Configurations弹出窗口 (Ctrl+Shift+Alt+R)中选择一个配置 ,然后选择 Configure | 分享。要停止共享运行配置,请选择 配置| 不共享。只要您将更改推送到共享层([SolutionName] .sln.DotSettings文件)到您的VCS中,并且其他用户将您的更改拉出,共享配置将随时可用。
请注意,其他团队成员将能够修改共享配置,只要通过VCS更新"解决方案团队共享"设置图层文件,更新版本就可以使用。
调试帮助
使用ReSharper,您可以在编辑器中改善您的调试体验。
内联值
当您在调试C#,VB.NET或C ++代码时暂停执行时,可以在编辑器中的相应代码行旁边看到本地变量,当前行表达式和函数的值。
此功能在调试会话期间提供即时反馈,这意味着您甚至不需要咨询 手表 或 汽车 工具窗口。内联值默认为启用,但您可以配置使用工具|显示哪些类型的值 ReSharper选项的调试页面。
-
C#
-
C ++
GIF
ReSharper理解 [DebuggerDisplayAttribute],这意味着用该属性标记的类型,属性和字段的值将相应地显示在编辑器装饰中。
可搜索的数据提示
ReSharper可以选择性地用 自己的DataTips 替换 Visual Studio DataTips,它有很多区别:
- 您可以在当前暂停执行上下文中搜索特定值。为此,只需在焦点位于DataTip中时开始键入。请注意,搜索只会在展开的节点中查找值。
- 当您删除鼠标指针时,DataTip消失,但是当您单击DataTip之外的任何地方时,DataTip不会消失。
-
如果一个类型既没有有意义的 ToString() 覆盖,也没有使用该[DebuggerDisplay] 属性进行注释 ,那么在调试器视图中呈现这种类型的对象可能是非常不明确的。在ReSharper DataTips中,您可以自定义这些对象的表示。为此,请在数据提示中展开类型,右键单击所需的数据成员并选择 高亮属性:
GIF
要使用ReSharper DataTips而不是Visual Studio DataTips,请启用Tools |上的相应选项 ReSharper选项的调试页面。
调试没有调试信息的模块(PDB)
使用ReSharper,您可以调试任何已编译的模块,即使它没有调试信息(PDB)。ReSharper将反编译模块,为其生成PDB并自动将此模块的反编译符号加载到Visual Studio调试器中。
先决条件
在调试没有PDB的模块之前,请检查以下Visual Studio设置(工具|选项):
- 在 调试| 符号 选项页面,请确保此目录 字段中的 缓存符号具有有效的磁盘路径值。
-
在 调试| 常规 选项页面,确保 启用只是我的代码 复选框被清除。
但是,即使这些设置中的一个或两个设置没有预期值,ReSharper也会建议在尝试从反编译的模块加载符号时自动更正这些值。在这种情况下,它会将 %LOCALAPPDATA% Temp SymbolCache添加 为符号缓存目录。
调试
在调试程序或开始调试之前,您需要为每个要调试的已编译模块加载符号。您可以通过以下方式之一来完成此操作:
- 在调试模式下,打开Visual Studio的模块窗口(Debug | Windows | Modules),选择几个模块中的一个,右键单击选择,然后选择 使用ReSharper Decompiler加载符号。
- 在 Process Explorer窗口 (ReSharper | Windows | Process Explorer)中,从 上下文菜单中选择几个托管模块或一个或多个进程,然后选择 Enable Debugging。如果选择进程,ReSharper将生成并加载不存在的PDB进程中的所有托管模块。
-
导航 到编译模块中所需的符号,并在反编译的源代码中设置断点。如果您设置断点的模块尚未加载,ReSharper将显示一个弹出窗口,您可以在其中启用此模块的调试:
反编译和加载符号可能需要一些时间,因此在以上述方式之一启动进程后,ReSharper将在Project / PDB Generation Status窗口中显示进度 。
使用待办事项列表
使用ReSharper,您可以调试任何已编译的模块,即使它没有调试信息(PDB)。ReSharper将反编译模块,为其生成PDB并自动将此模块的反编译符号加载到Visual Studio调试器中。 ReSharper | Windows | 待办资源管理器
Ctrl+Alt+D
ReSharper_ShowTodoExplorerReSharper提供了一种简单的方法来跟踪 代码中的任务和 技术债务 - 匹配特定模式的代码项目(注释,字符串文字或标识符) 可以轻松地位于编辑器以及使用待办事项浏览器的整个解决方案中 窗口。
待办事项在编辑器中和标记栏上 根据其类型(编辑,正常,问题,警告,错误)突出显示 。颜色可在Environment |上配置Visual Studio选项的字体和颜色页面:
待办模式
默认情况下,ReSharper为以下类型的常用待办事项提供三种预定义模式:
- 包含TODO - Normal 的评论
- 包含BUG - 错误 的注释
-
A NotImplementedException 在代码中 - 编辑
您还可以定义自己的模式,以便您可以快速访问" 待办事宜浏览器"窗口中的特定技术债务项目 。
定义自定义待办模式
- 打开 工具| ReSharper选项的"待办事项资源管理器"页面。
- 点击 工具栏上的添加。
- 为您的待办模式提供一个标题,并指定一个正则表达式,其中包含要在注释中检测到的关键字。例如, (W|^)(?<TAG>Refactor)(W|$)(.*)。
- 选择ReSharper在哪里应用表达式以查找待办事项(注释,字符串和/或标识符)。
- 或者,指定模式是否区分大小写。
- 为模式选择一种类型,以定义在编辑器和" 待办事项浏览器"窗口中匹配的项目将如何着色 。
- 点击 OK 将这个模式添加到列表中。
- 您也可以复制,编辑或删除现有的模式。
-
单击 保存 以应用修改并让ReSharper选择保存它们的位置,或使用保存到 下拉列表将修改保存到特定的设置图层 。有关更多信息,请参阅 管理和共享resharper设置。
将待办事项链接到外部URL
在待办事宜模式中,您可以为将指向外部网址的项目添加占位符。这对问题跟踪器特别有用 - 您可以在评论中使用问题的ID,ReSharper会让您在浏览器中或直接在编辑器窥视视图中打开相应的问题。
假设您的项目位于GiHub上,并且您想在代码中为GitHub问题添加注释。你所要做的就是 为此创建一个自定义的待办模式:
- 正则表达式: (?<=W|^)(?<TAG>GH #(?<ISSUE_ID>d+))(W|$)(.*)
-
网址: https://github.com/<YOUR_PROJECT>/issues/${ISSUE_ID}
ReSharper现在会将 GH #XX您的评论视为指向相应GitHub问题的链接。
除了 Ctrl点击这些评论之外,您还可以 Ctrl+Shift在编辑器预览中点击链接。浏览到URL的两种方式也可从 Alt+Enter菜单中获得。
在待办事项之间导航
要在当前文件中的待办事项之间导航,请在标记栏上使用待办事项标记 。
在整个解决方案中研究待办事项
- 按 Ctrl+Alt+D 或选择 ReSharper | Windows | 待办事项浏览器 从主菜单。或者,您可以按 Ctrl+Shift+A,在弹出窗口中开始输入命令名称,然后在那里选择它。
- 在 打开的待办事宜浏览器窗口中,单击 或 导航至下一个或上一个项目。要在编辑器中找到待办事项,请双击它们。
-
要在窗口中直接研究所选项目的源代码,请单击 工具栏上的" 显示预览 "。如有必要,您可以在右侧底部找到预览窗格。
分组和过滤待办事项
默认情况下,待办事项列表根据项目结构列出待办事项。如有必要,您可以使用分组依据选择器更改分组选项 。您可以禁用分组,按标签,类型,名称空间,目录,项目分组。
GIF
根据代码库的大小和年龄,可能会有很多待办事项。要专注于特定项目,可以按模式 (例如 TODO或 BUG)过滤待办事项 - 只需在" 过滤 器"选择器中选择所需模式 即可显示与相应模式匹配的项目并隐藏所有其他项目。