代码问题的快速修复
ReSharper可以帮助您立即修复设计时检测到的大部分代码问题。就像按Alt+Enter突出显示的代码问题一样简单,并选择合适的方法来解决问题或改进次优代码。
GIF
应用快速修复
快速修复可视化显示为突出显示的代码问题左侧的操作指示器。当您在代码问题处设置插入符号时,会显示这些指示符。以下指标意味着快速修复:
-
-建议在NuGet包图库中找到未解决的类型或名称空间,
-
-建议就地重构或重构,以解决检测到的代码问题。
-
-建议使用VisualStudio的代码更正或重构操作。
-
-建议快速修复可以安全删除的冗余代码。
查看和应用快速修复
-
突出显示的问题上设置插入符号。
-
点击所需的快速修复或使用箭头键选择它,然后按Enter。
在大多数情况下,立即应用快速修复。但是,一些快速修复(例如,全部更改)需要用户交互来选择它们如何转换您的代码。在这些情况下,热点会议部署在编辑器中,您可以在其中选择一个建议值或在活动输入位置提供自己的值:
要完成热点会话:
-
如果ReSharper的提出了当前参数,使用一些值Up和Down箭头键通过建议值的列表中导航,或者只是在键入一个所期望的值。
-
按Tab或Enter接受该值并移至下一个参数的输入位置。如果这是最后一个参数,则热点会话完成,插入符号将移动到为会话定义的结束位置。
-
按下Shift+Tab可将输入焦点移至上一个参数的输入位置。
-
按Esc退出热点会话。在这种情况下,所有会话参数都将使用默认值进行初始化。
预定义的快速修复列表可以通过在结构搜索和替换模式中定义的自定义代码检查来扩展。
一些快速修复不仅可以应用在当前的脱字符位置,而且可以应用于更大的范围。有关更多信息,请参阅修复范围。
从VisualStudio快速修复
从2015年开始,VisualStudio带有自己的代码分析引擎(Roslyn),并提供自己的灯泡功能来执行快速操作,包括重构和修复错误。
VisualStudio的快速操作通常执行与ReSharper的快速修复相同的修复。因此,对于某些错误,您可能会从VisualStudio和ReSharper获得两个类似的防错建议。在下面的插图中,您可以看到两个灯泡都暗示删除多余的using指令:
为了避免这种情况,CodeInspection|Settings上提供了"不显示VisualStudio灯泡..."的设置页面。此选项在默认情况下处于启用状态,因此除非您禁用它,否则您将看不到重复的灯泡。
虽然ReSharper默认禁止VisualStudio灯泡,但它不会简单地禁用VisualStudio快速操作。对于每个VisualStudio的快速操作,ReSharper执行以下操作:
-
如果有类似的ReSharper的快速修复,VisualStudio的快速操作不会显示。
-
如果没有类似的ReSharper的快速修复程序,则VisualStudio的操作在ReSharper的操作列表中可用。您可以通过特殊图标识别VisualStudio的快速操作。
-
快速修复的例子
-
在各种情况下都可以使用快速修复功能,这些功能太大而无法列出。ReSharper在所有支持的语言中总共提供了1200多个快速修复程序。在这里,我们将展示如何使用它们使用一小部分情况:
-
类型不匹配
-
只要表达式的类型不能隐式转换为适用于表达式上下文的类型,ReSharper就会检测到这个错误并在编辑器中突出显示它。将脱字符号置于突出显示的错误并按下之后Alt+Enter,用户可以从以下列表中选择一个快速修复:
-
下表列出了应用建议的快速修复的效果。
快速解决
影响
投射到"string'
安全地转换为"string'
将"o"的类型更改为"string"
将"s"的类型更改为"object"
呼叫ToString()
-
未定义的变量
-
只要ReSharper在代码中检测到未定义的变量,就会突出显示错误。将脱字符号定位在突出显示的错误处并按下后,Alt+Enter您将看到以下快速修复列表:
-
下表列出了应用建议的快速修复的效果。
快速解决
影响
创建局部变量's'
s创建一个新的局部变量,建议您选择所需的类型。
s在包含方法中创建参数''
一个新的参数被添加到方法签名中:
创建其他
打开一个子菜单,您可以选择在相应的类中创建一个字段或一个属性。例如,如果您选择创建一个字段,s则会在当前类中创建一个新的专用字段。出现以下建议帮助用户选择新字段的正确类型:
更改所有's'
如果选择全部更改,则会显示以下建议:
只输入一次新名称;ReSharper改变了未定义变量的所有其他事件:
-
未定义的方法调用
-
只要ReSharper在代码中检测到对未定义方法的调用,就会突出显示错误。将插入符定位在突出显示的错误并按下后Alt+Enter,ReSharper会显示以下快速修复列表:
-
在应用快速修复之后,代码将被修改,如下表所示:
快速解决
影响
创建方法'ResolveManagedReference'
这个快速修复程序声明了一个新方法,其中包含从方法调用派生的签名,有利于喜欢自上而下编程的开发人员。在我们的示例中,ReSharper创建了以下声明,正确地猜测返回类型:
ReSharper还建议适用的类型和新方法参数的名称:
您可以配置ReSharper如何在生成的成员中处理正文。请参阅从使用和ReSharper|生成代码选项|代码编辑|成员生成细节。
创建其他
该子菜单包括其他涉及创建辅助代码的快速修复。例如:
ResolveManagedReference在包含方法和更新层次结构中创建参数''
此快速修补程序从未解析的符号中为当前方法创建一个新参数,并将此参数引入该方法可能具有的任何基本成员和继承者中。or:
ResolveManagedReference在包含方法中创建参数
此快速修复从未解析的符号在当前方法中创建一个新参数,但不更新其基本方法或继承者。更改所有'ResolveManagedReference'
与未定义变量的相应快速修复相似,此快速修复功能允许用户快速替换所有出现的符号someMethod。
-
被遗忘的方法返回
-
如果一个方法被期望返回一个值,但你忘记了提供一个return语句,ReSharper通过突出显示麻烦方法的结束括号来警告你。将脱字符号定位在突出显示的错误处并按下后,Alt+Enter您将看到以下快速修复:
快速解决
影响
添加return语句
应用快速修复程序后,ReSharper添加一条return语句返回null。
使方法返回void
在应用快速修复程序之后,ReSharper用该替换方法的初始返回类型void。
-
缺少使用指令
-
无论何时在代码中有一个类型名称,因为忘记在文件中写入相应的使用指令而无法解析时,小弹出窗口会建议导入该类型:
-
按Alt+Enter,然后插入相应的使用指令。如果存在具有匹配名称的多个类型,则会要求您选择要使用的类型(请参阅导入名称空间以了解详细信息)。
-
如果出于某种原因,您在显示弹出窗口时选择不导入所需的名称空间,或者如果您清除了Showthe"Importnamespace"actionusingpopup窗口显示CodeInspection|Settings中,您可以随时导入一个类型,方法是将插入符号设置为非导入类型,Alt+Enter在显示快速修补程序后按,然后选择Importtype[name]快速修复:
-
缺少异步修改器
-
如果你有一个包含await操作符的方法,但它没有被定义为异步,ReSharper检测到这种不匹配,并提供使用相应的快速修复来解决这个问题。
之前:
应用快速修复:
后:
-
将循环转换为LINQ表达式
-
使用C#3.0和LINQ,开发人员可以通过直接向编译器描述他们的意图来更轻松地编写数据密集型代码。ReSharper检测可以使用LINQ语法重写的代码,并提供自动执行转换的代码:
之前:
应用快速修复:
后:
-
在方法参数和返回中迁移到IEnumerable
-
ReSharper的扫描您的代码库来检测,可以安全返回和接受的方法IEnumerable,而不是一个更具体的类型,如Array,List或ArrayList:
之前:
应用快速修复:
后:
-
将赋值语句转换为对象初始值设定项
-
ReSharper提供了一个上下文动作和一个快速修复功能,可以将赋值语句转换为对象初始值设定项。上下文操作允许您逐个添加字段赋值给初始化程序,而快速修补程序一次添加它们。快速修复的工作原理如下:
之前:
应用快速修复:
后:
-
将静态方法调用转换为扩展方法调用
-
当您将扩展方法作为传统的C#静态方法调用时,ReSharper可帮助您快速符合标准扩展方法调用实践:
之前:
应用快速修复:
后:
-
将匿名方法转换为lambda表达式
-
ReSharper建议将匿名方法转换为lambda表达式。相反的功能是作为上下文操作提供的。
之前:
应用快速修复:
后:
-
转换为自动属性
-
ReSharper使得它可以快速地将传统的私人基于字段的属性转换为在C#3.0中实现的自动属性。有关更多信息,请参阅使用自动属性。
之前:
应用快速修复:
后:
使类型参数invariant不变
-
当使用类型参数违反其差异时,ReSharper建议使参数不变:
之前:
应用快速修复:
后:
导入缺少的命名空间
当您使用名称空间尚未在文件中导入的类型时,ReSharper可帮助您找到这些类型并添加缺少的名称空间导入指令。如果存在多个未解析类型的缺失名称空间,例如在文件中粘贴一段代码之后,ReSharper将帮助您在一次操作中导入所有这些名称空间。
除了使用非导入的类型并为它们导入命名空间外,您还可以使用导入符号完成功能,该功能可帮助从相关程序集中查找类型,并自动导入缺失的命名空间。
ReSharper在下列程序集中查找非导入的名称空间:当前项目中引用的程序集,解决方案中其他项目中引用的程序集,可传递引用的程序集。如果在当前项目中未引用的模块中找到该类型,则ReSharper还建议添加对该模块的引用。
缺少的命名空间是根据您的命名空间导入首选项导入的(例如,插入了导入指令或添加了类型名称限定符)。
导入指令按固定顺序添加:所有System.*命名空间首先进入,按照字符后面的第二个字母按字母顺序排序;接下来按字母顺序排列所有其他名称空间。当您编辑代码文件时,缺少名称空间的类型会在设计时代码检测中检测到(因此请确保它已启用)并突出显示为错误。默认情况下,导入缺少名称空间的操作与正常快速修复不同:它会显示为弹出窗口,该窗口悬停在第一个未解析的符号上,而不管您的插入位置:
或者粘贴代码后:
因此,您可以使用习惯Alt+Enter快捷方式对所有未解决的类型应用此修补程序,而无需更改当前插入位置,因此您的编辑会话不会中断。请注意,只有当粘贴代码块中的所有非导入类型都可以在当前项目的引用模块中明确找到时,才会显示Importtypesforpastedcode操作的导入类型"。
如果几个名称空间包含未解析的符号,则ReSharper允许您选择要导入的名称空间:
如果出于某种原因,您在显示弹出窗口时选择不导入所需的名称空间,请按Esc隐藏弹出窗口。您随后可以通过按Alt+Enter,然后选择相应的快速修复来导入命名空间。
您也可以选择不显示此弹出窗口,方法是清除Showthe"Importnamespace"actionusingpopup设置页面。在这些情况下,您可以随时通过将插入符号设置为非导入类型,按下Alt+Enter并选择所需的快速修复,为未解析的类型导入缺失的名称空间:
修复范围
与'修复范围'类似,某些上下文操作也可以在更广的范围内应用。
大多数快速修复可以修复插入符号下的当前问题,但其中一些(如删除未使用的指令,使字段为只读,删除多余的转换等)也可以自动查找并修复更大范围内的问题-当前文件,当前项目或整个解决方案中。
在范围内应用修复
您可以通过在动作列表中显示的旁边的小箭头来识别此类修复。
代码清理也可以在特定范围内进行小修补。
在范围中应用修复
-
-
将插入符号设置为由ReSharper检查突出显示的代码问题。
-
选择您想要应用的快速修复。
-
单击快速修复程序右侧的箭头或按右箭头键展开可用范围列表。如果快速修复的右侧没有箭头,则此快速修复仅适用于本地。
-
选择要应用的快速修复的范围,然后单击它或按Enter。
ReSharper适用的所有文件修复了在编辑器选项卡中打开的范围。如有必要,您可以使用单个命令撤销这些文件中所有更改:选择Edit|Undo或按Ctrl+Z。
修复范围内不一致的命名
修复不一致命名的快速修复程序调用重命名重构,以确保在解决方案中重新命名所有符号。
因此,当您选择在更广的范围内修复命名时,ReSharper会显示一个额外的对话框,您可以在其中选择要重命名的项目:
可以在更大范围内应用的快速修复列表
可以在更广泛的范围内应用的快速修复程序的完整列表包括:
C++
-
添加缺少的功能参数说明
-
将"覆盖"说明符添加到覆盖函数
-
添加"模板"关键字
-
添加'typename'关键字
-
用"clang-tidy"修复它""
-
更改智能指针以实现功能
-
删除多余的说明符
-
删除多余的类型名称模板关键字
-
加入声明和分配
-
使成员函数'const'
-
使成员函数"静态"
-
删除文件中所有未使用的#include指令
-
删除多余的"其他"关键字
-
删除多余的成员初始化器
-
删除多余的括号
-
删除多余的限定符
-
删除语句
-
删除无法访问的代码
-
用'false'替换表达式
-
用'nullptr'替换表达式
-
替换import指令修复导入文件路径中的斜杠
-
用rethrow替换throw
-
用前缀运算符替换
-
按照初始化顺序对成员初始化器进行排序
C#
-
参数样式添加丢失/删除多余的参数名称(请参阅代码语法样式:命名/位置参数)
-
排列属性将属性放置到单个节中(请参阅代码语法样式:多个属性)
-
排列大括号添加缺失大括号/去除冗余大括号(请参阅代码语法样式:用于单个嵌套语句的大括号)
-
安排代码主体
-
排列不一致的限定符(请参阅代码语法样式:可选成员限定符)
-
排列冗余限定符(请参阅代码语法样式:可选成员限定符)
-
用圆括号说明优先顺序(请参阅代码语法样式:可选括号)
-
转换为自动属性(请参阅使用自动属性)
-
修复内置的类型引用样式使用类型关键字/CLR类型名称(请参阅代码语法样式:内置类型引用)
-
导入方法(请参阅代码语法样式:命名空间导入)
-
导入方法弹出导入项目和所有其他引用(请参阅代码语法样式:命名空间导入)
-
导入类型(请参阅导入缺少的命名空间)
-
导入类型快速弹出(请参阅导入缺少的命名空间)
-
加入空值检查并赋值
-
使自动属性为只能get-only(请参阅让自动属性获取)
-
使运营商"公共静态"
-
只读使字段只读(请参见使字段为只读)
-
移动到''命名空间
-
删除Remove'()'(请参阅代码语法样式:可选括号)
-
删除参数名称说明(请参阅代码语法样式:命名/位置参数)
-
作为操作员移除
-
删除属性
-
删除cast投
-
删除初始化程序
-
删除'新'修饰符modifier
-
删除参数类型规范specification
-
删除'params'数组创建
-
删除"部分partial"关键字
-
删除禁止prohibited修饰符modifier(s)
-
删除属性分配assignment
-
删除多余redundant的参数值
-
删除多余redundant的'上升ascending'
-
删除多余的基础构造函数调用baseconstructorinvocation
-
删除多余的'base()'
-
删除多余的括号braces
-
删除多余的逗号comma
-
删除多余的比较comparison
-
删除多余的条件condition
-
删除多余的构造函数constructor
-
删除多余的委托构造函数调用delegateconstructorcall
-
删除多余的其他else
-
删除多余的'int'
-
删除多余的"内部internal"修饰符(请参阅代码语法样式:修饰符)
-
删除冗余成员初始值initializer设定项
-
删除多余的名称name
-
删除多余的"新new"
-
删除多余的括号parentheses(请参阅代码语法样式:可选圆括号)
-
删除多余的括号parenthesis(请参阅代码语法样式:可选圆括号)
-
删除冗余签名signature
-
删除多余的'string.Format()'调用(请参阅代码分析和帮助字符串文字)
-
删除多余的'ToCharArray()'
-
删除多余的'ToString'(请参阅代码分析和帮助器字符串文字)
-
删除多余的类型参数arguments
-
删除多余的类型说明specification
-
删除多余的逐字前缀verbatimprefix
-
删除"密封sealed"关键字
-
删除分号semicolon
-
删除语句statement
-
删除'未检查unchecked'的表达
-
删除不必要unnecessary的空白
-
删除'不安全unsafe'修饰符
-
删除文件中未使用unused的指令directives
-
删除未使用unused的标签
-
重命名为''
-
将"不安全unsafe"声明替换为其正文
-
用count访问替换access
-
用空白行分开陈述statements
-
排序修饰符modifiers(请参阅代码语法样式:修饰符)
-
扩展extension方法调用invocation
-
要字符串文字literal
-
从委托创建中解包Unwrap
-
使用数组初始值设定initializer
-
使用基类限定符qualifier
-
使用显式explicit类型-根据代码样式设置使用'var'或显式类型Use'var'orexplicittypedependingon。
-
使用'nameof'表达式
-
使用可空nullable的简写形式
-
使用字符串插值interpolation
VB.NET
-
导入类型(请参阅导入缺少的命名空间)
-
导入类型快速弹出(请参阅导入缺少的命名空间)
-
使自动属性为只能(请参阅让自动属性获取)
-
只读使字段只读(请参见使字段为只读)
-
移动到''命名空间
-
删除'ByVal'修饰符
-
删除多余的元素
-
删除文件中多余的"导入imports"
-
删除多余的限定符qualifier
-
删除未使用的标签
-
重命名为''
-
要隐式implicitly键入
-
使用字符串插值
-
Vb使readonly使字段为只读(请参阅使字段为只读)
XAML
-
重命名为''
JavaScript的
-
添加显式的'null'
-
添加缺少的逗号comma
-
添加/更改"''"quotes
-
转换为模板字符串
-
修复属性名称
-
Json架构不兼容incompatibilities
-
使这个列表块范围内的所有变量variables
-
将变量variable''移动到内部块
-
删除意外unexpected的逗号
-
重命名为''
-
终止Terminate文件中的所有未终止unterminatedstatements的语句
ASP.NET
-
优化寄存器指令
-
删除文件中多余的"导入"
-
删除文件中未使用的指令(请参阅代码语法样式:命名空间导入)
HTML
-
添加/更改报价
打字稿TypeScript
-
更改public修饰符以符合样式conform
-
更改为ECMAScript6'导出默认值'
-
转换为'as'操作符
-
转换为ECMAScript6导入语句
-
修复相对路径样式
-
Js2ts转型
-
删除多余的限定符
-
删除多余的参考评论
-
删除多余的类型说明
-
删除未使用unused的"导入"
-
明确指定''Specify''explicitly
-
显式指定变量类型
代码探索
除代码检查外,ReSharper的代码分析还允许您通过构建层次结构,call链和value链来调查成员。显示这些分析结果的"层次结构"窗口和"检验结果"窗口允许您进一步浏览代码并导航到特定的调查结果。
检查这个
ReSharper|Inspect|InspectThis…
Ctrl+Shift+Alt+A
ReSharper_InspectThis此命令是所有ReSharper代码探索功能的快捷方式:呼叫跟踪,值跟踪,浏览类型层次结构,类型依赖关系图。您可以从编辑器,文件结构窗口和其他工具窗口中调用此命令。根据上下文的不同,快捷键可以帮助您访问该上下文中可用的所有代码探索功能。
查看上下文可用的代码探索功能
- 将插入符号放在编辑器中的符号上,或者在工具窗口中选择符号。
- 按Ctrl+Shift+Alt+A或选择ReSharper|Inspect|InspectThis…。或者,您可以按Ctrl+Shift+A,在弹出窗口中开始输入命令名称,然后在那里选择它。
-
在检查该出现的下拉列表。
-
从列表中选择一个项目并单击它或按Enter。
呼叫跟踪CallTracking
ReSharper|Inspect|Incoming/OutgoingCalls
ReSharper_CallHierarchyShowIncomingCalls/ReSharper_CallHierarchyShowIncomingCalls呼叫跟踪使您能够查看和浏览代码中的呼叫链。由于支持事件,接口和闭包,ReSharperCallTracking相对于VisualStudio本地CallHierarchy是一个重大改进。
双击"检查结果"窗口中的节点,导航到编辑器中的相应调用。
在层次结构视图中,ReSharper使用图标来区分不同种类的符号。您可以在符号图标方案参考页面上了解图标的含义。如有必要,您可以在使用SourcecodesymboliconsthemeradiobuttonsontheEnvironment|General页面。
调查传出Toinvestigateoutgoingcalls
- 将插入符号放在方法,事件,属性或构造函数的名称中。
- 在主菜单中,选择ReSharper|Inspect|OutgoingCalls或按Ctrl+Shift+Alt+A,然后在检查此下拉列表中选择Outgoing。
-
在打开的"检查结果"窗口中,可以展开成员节点以对其运行代码分析并显示当前成员调用的所有成员。您还可以展开每个子节点。
调查Toinvestigateincomingcalls
- 将插入符号放在方法,事件,属性或构造函数的名称中。
- 在主菜单中,选择ReSharper|Inspect|IncomingCalls或按Ctrl+Shift+Alt+A,然后在"检查此下拉列表"中选择"Incoming"。
-
在打开的"检查结果"窗口中,可以展开成员节点以运行代码分析并显示调用当前成员的所有成员。您还可以展开每个子节点。
当您在getalotofcallsinthecalltrackingresults结果中,您可以隐藏特定/整个结果树分支,以更清楚地了解您要查找的内容。
从结果树中隐藏条目
- 右键单击要隐藏的条目,然后在上下文菜单中选择忽略。
- 该条目变灰,但它仍然可见和可搜索。此外,工具栏上还会显示"忽略的使用情况ShowIgnoredUsages"按钮。
- 要隐藏或显示忽略的条目,请切换显示忽略的用法按钮。
-
要重置忽略的条目,请切换显示忽略的用法按钮,右键单击灰色的项目,然后在上下文菜单中选择撤消忽略。
价值追踪
ReSharper|Inspect|ValueOrigin/Destination
ReSharper_DfaReachingDefinitionsUp/ReSharper_DfaReachingDefinitionsDown双击"检查结果"窗口中的任何数据流元素以在编辑器中导航到它。
价值跟踪可帮助您调查特定类型的值,并可能确定某个不正确值可能传递到程序中的某个给定点以及下一个可能传递的位置。这有助于您调查可能的NullReferenceException,不恰当的行为,以及为什么会得到不正确的值。
调查会员的价值来源
- 将插入符号放在要调查其值的方法,属性,变量,字段等的名称中。
- 在主菜单中,选择ReSharper|检查|值来源或按Ctrl+Shift+Alt+A,然后在检查此下拉列表中选择值来源。
-
在打开的"检验结果"窗口中,您可以调查该值的可能来源。
调查传出member'svaluedestinations
- 将插入符号放在方法,事件,属性或构造函数的名称中。
- 在主菜单中,选择ReSharper|Inspect|ValueDestination或按Ctrl+Shift+Alt+A,然后在检查此下拉列表中选择ValueDestination。
-
在打开的"检查结果"窗口中,可以展开成员节点以对其运行代码分析并显示当前成员调用的所有成员。您还可以展开每个子节点。
如果一个节点表示一个集合的元素,它将被标记为;如果有lambda表达式,则标记为。
探索类型层次结构
ReSharper|Inspect|TypeHierarchy类型层次结构
Ctrl+E,H
ReSharper_TypeHierarchyBrowse您可以在多态成员上调用Hierarchy,并区分这个成员有或没有实现的类型。此外,您可以查看CSS样式的层次结构。
借助ReSharper,您可以调查类型的继承层次结构。您可以看到所选类型的基本类型和继承者,并通过单击鼠标导航到它们中的任何一个。对于层次结构中的任何节点,您可以查看预览窗格中的全部或仅多态成员。
调查层次结构
- 在编辑器中打开所需的类型或在解决方案资源管理器中展开它,然后将光标放置在类型或类型成员上。
- 按Ctrl+E,H或选择ReSharper|Inspect|Hierarchies层次结构。或者,您可以按Ctrl+Shift+A,在弹出窗口中开始输入命令名称,然后在那里选择它。
-
树中的一些符号以粗体显示。这意味着它们直接从正在检查的类型继承。
层次结构可能相当复杂,因此很难找到一个特定符号,特别是当您对层次结构中的名称和位置有疑问时。在这种情况下,您可以开始键入符号名称或其CamelHumps缩写的一部分,并且ReSharper缩小窗口中的元素集合:
如果要查看层次结构中包含符号的模块,请在分组依据Groupb列表中选择ContainingModulesHierarchy包含模块层次结构。
如果层次结构窗口关闭,您可以随时通过选择ReSharper|Windows|Hierarchies层次结构。
但是,此命令不会构建任何新的层次结构,并且如果自从当前解决方案已打开以来尚未构建任何层次结构,则该窗口可能为空。您还可以通过单击工具栏上的ShowonDiagram在图上显示,在类型依赖关系图上可视化当前层次结构。
重建中间节点的层次结构
- 在层次结构树视图中,选择所需的节点。
-
单击工具栏上的基于此,或在选择的上下文菜单中选择相应的命令。
您可以直接从"层次结构"窗口访问所有可用于成员的重构-或右键单击成员,然后在上下文菜单中选择所需的重构命令。Ctrl+Shift+R
预览层次结构中选定类型的成员
- 在层次结构中选择一种类型。
-
点击工具栏上的显示成员或按Ctrl+P。成员预览窗格显示在窗口的底部:
- 您可以通过单击工具栏上的ShowMembers旁边的向下箭头并选择Right来将预览窗格移动到窗口的右侧。
-
你也可以预览一个类型的所有成员,或者只是那些多态的成员。要在这两种模式之间切换,请使用预览窗格顶部的"AllInstanceMembers所有实例成员"和"OnlyPolymorphicMembers仅多形性成员"按钮。
视觉依赖性分析
借助ReSharper,您可以构建和分析解决方案中类型和项目的依赖关系图。所有可视化图形都是在不编译任何内容的情况下构建的,并且默认情况下方便布置在图表上,您可以调用很多其他ReSharper功能,包括导航,重构等等。
探索类型依赖关系图
ReSharper|Architecture|ShowTypeDependencyDiagram|显示类型依赖关系图
ReSharper_ShowTypesDependenciesReSharper允许您直观地研究类型在解决方案中如何相互依赖。在类型依赖关系图中,您可以添加来自不同项目或编译程序集的任意数量的类型,并可视化它们之间的不同种类的依赖关系。
建立初始图
有几种方法来构建一个新的类型依赖关系图:
-
在解决方案资源管理器,对象浏览器,体系结构资源管理器,类视图或程序集资源管理器窗口中选择一个或多个项目,然后选择ReSharper|Architecture|ShowTypeDependencyDiagram显示类型依赖关系图,右键单击选择,然后选择ShowTypeDependencyDiagram显示类型依赖关系图,或者按Ctrl+Shift+Alt+A,然后选择ShowTypeDependencyDiagram显示类型依赖关系图。
在这种情况下,所选项目中声明的所有类型都将添加到图表中,并且聚合,使用和继承依赖关系可视化。 -
在体系结构视图中,选择一个或多个项目,右键单击选择并在上下文菜单中选择ShowTypeDependencyDiagram显示类型依赖关系图。
-
有关"查找结果"窗口或"层次结构"窗口中显示的结果列表,请单击在关系图上显示。
在这些情况下,将所有用法或层次结构条目添加到图中,并且可视化使用/继承依赖关系。 -
选择一个或多个项目引用,右键单击选择,然后选择在图表上显示用法。
在这种情况下,使用该图将显示引用项目中引用程序集的类型用法。新创建的项目依赖关系图显示在"层次结构"窗口的新选项卡中。
请注意,该图与解决方案不同步,即如果您在代码中重命名或删除类型,则该图不会更改。要查看图表是否是最新的,可以查看右下角显示的创建时间。您也可以通过单击工具栏上的刷新类型依赖关系来重建图表。
调整图表的视图
类型依赖关系图可以通过两种方式进行布局:
-
继承层次结构Layouter-此选项根据它们的继承关系来排列类型:基类型向上移动。
-
业务逻辑层布局-此选项根据所有显示的关系排列类型。
您可以使用左侧的相应选择器在这些选项之间切换:
每次刷新图表,添加或删除类型或更改依赖关系过滤器时,都会自动更新图表布局。
要平移和缩放图表,请使用图表区域左上角的控件。或者,您可以单击图表项目外部图表区域中的任意位置,并在显示手形光标时进行拖动。对于缩放,您还可以使用鼠标滚轮。
图表布局是自动计算的,但您可以根据需要进行更改:所有项目都可以移动。要移动项目(类型,依赖链接或分组项目),首先点击它选择,然后在显示十字光标时单击并拖动它。
如有必要,可以通过以下方式之一折叠和展开图表中的分组项目:
-
点击分组项目左上角的向下箭头。折叠后,标志变成向上箭头,您可以点击它来展开该项目。
-
选择图表,然后按在分组项目Ctrl+LeftArrow和Ctrl+RightArrow。
添加和删除图表上的项目
当您的焦点位于图表区域的任何位置时,您可以开始输入以查找并添加整个解决方案中的类型。
在任何时候,您都可以修改显示的图表,以便只显示所需的类型。如有必要,您可以通过单击撤销或按下来逐步反转图中所做的更改(添加/删除的项目)Ctrl+Z。要反转撤消命令,请单击重做或按Ctrl+Y。
要从图表中删除类型和文件夹,请使用分组项目右上角的十字或Delete在选择项目时按。或者,选择要保留的项目,右键单击选择并在上下文菜单中选择ShowOnlySelectedItems仅显示所选项目。对于多项选择,请Ctrl单击项目。
还有几种方法可将项目添加到图表中:
要加快布局图,请在向图添加大量新类型或展开大型分组节点之前禁用所有依赖项过滤器,然后再次启用必要的过滤器。
-
将解决方案资源管理器中的类型,文件夹和项目拖放到图中。
-
在编辑器中选择一种类型,然后将所选类型拖放到图表中。
-
要查找并添加所有引用类型,请右键单击某个类型或分组项并在上下文菜单中选择Addallreferencedtypes添加所有引用类型。如果您在分组项目(文件夹或项目)上调用此命令,ReSharper会为当前显示的所有类型添加引用类型。
-
要从解决方案和引用的程序集中按名称查找和添加类型,请在搜索框中输入名称。输入时可以使用通配符(例如星号'*')和CamelHumps:
选择一种类型并按下Enter或点击它将其添加到图表中。下拉菜单中绿色突出显示的类型已添加到图表中。如果您选择这种类型,图表焦点就会转移到它。 -
在详细信息弹出窗口中,单击任何相关类型以添加它,或者使用将Addallusedtypestothediagram,Addallusagestothediagram,Addallbasetypes,andAddallimmediateinheritors所有使用的类型添加到图中,将所有用法添加到图中,添加所有基类型和添加所有立即继承器链接以添加多个类型。
研究特定类型和容器
当一个节点被折叠时,你可以将鼠标悬停在它上面并快速查看里面的内容。在出现的弹出窗口中,您可以看到添加到此节点内图表的类型数量以及此节点内引用的所有模块的数量:
如有必要,您可以单击引用的模块并/或单击Addmissingitems添加缺失项目以将此节点中的其他项添加到图中。
您可以双击任何类型以在编辑器中打开它。如果类型是在已编译的程序集中定义的,则根据您的首选导航方式打开已编译的代码。
您可以获取任何特定类型的详细信息(以及类型之间的任何依赖关系)。要获取某个类型的详细信息,请将鼠标悬停在该类型上,一旦出现详细信息,请将鼠标指针移动到该类型上。
在类型详细信息弹出窗口中,您将看到给定类型使用的类型,类型的使用位置,继承的类型,在构造函数参数中使用的类型等等。
如果该类型具有XML文档,则摘要也会显示在弹出窗口中。您可以点击类型将它们添加到图表中。用绿色突出显示的类型已添加到图表中。如果你点击这种类型,图表焦点就会移动到它。右上角的Gotodeclaration转到声明链接允许您在编辑器中打开该类型。
研究类型之间的依赖关系
在类型依赖关系图上,您可以可视化几种依赖关系。要显示或隐藏特定种类的依赖关系,请使用"过滤器依赖关系FilterDependencies"选择器中的相应项目:
-
聚集依赖关系AggregationDependencies-当类型是其他类型的集合或容器时显示一种依赖关系。
这种依赖关系显示为绿色虚线。该行旁边显示相应字段的名称。您可以将鼠标悬停在该行上以查看字段声明并导航到编辑器中的相应位置。 -
用法依赖关系UsagesDependencies-当一种类型的变量,参数或方法返回在另一种类型中使用时,显示一种依赖关系。
这种依赖性显示为一条蓝线,其厚度反映了相对使用次数。您可以将鼠标悬停在该行上以查看用法列表:
点击特定用法会将您带到文本编辑器中的相应位置,单击显示所有用法Showallusages链接将打开查找结果窗口中的所有用法。 -
继承依赖关系InheritanceDependencies-当一种类型扩展或实现另一种类型时,显示一种依赖关系。这种依赖性显示为灰线。您可以将鼠标悬停在该行上以查看继承关系并导航到编辑器中的相应位置。
传递继承依赖关系使用虚线显示。您可以将鼠标悬停在这些行上,然后使用弹出窗口检查依赖关系的类型,并通过单击它们将这些类型添加到图中。
-
返回类型依赖关系ReturnTypeDependencies-当一种类型具有返回另一种类型的方法或属性时,显示一种依赖关系。这种依赖表现为紫罗兰色线。您可以将鼠标悬停在该行上以查看成员列表并导航到编辑器中的相应位置。
-
构造器注入ConstructorInjection-当一种类型作为另一种类型的构造器参数公开时,显示一种依赖关系。这种依赖性显示为一条棕色线。您可以将鼠标悬停在该行上以查看构造函数并导航到编辑器中的相应位置。
在图上调用其他ReSharper功能
从图表中的项目导航
要在"导航至"菜单中列出任何项目的所有可用导航目的地,请按Alt+`或右键单击该项目并选择NavigateTo导航至。
您可以通过在选择该项目时在解决方案资源管理器中找到任何项目(文件,文件夹或项目)Shift+Alt+L。
您也可以通过点击列表相关用法Showallusedtypesinfindresultswindow显示在查找结果窗口中所有使用的类型或Showallusagesinfindresultswindow显示在查找结果窗口中的所有用途的详情弹出式窗口的类型,或显示所有用途Showallusages的的弹出依赖关系链接。
重构图上的项目
从图中的任何项目,您都可以调用所有可用的重构。为此,请按Ctrl+Shift+R或右键单击并选择RefactorThis重构此。
您也可以通过将类型拖到所需的文件夹来执行移动到文件夹重构。此重构会将包含该类型的文件移动到目标文件夹,修复名称空间引用并在必要时将内部可见性更改为公共。
请注意,默认情况下,此行为已启用。要禁用它,请Allow'MovetoFolder'ondrag-n-drop在拖放时单击允许"移动到文件夹"。请注意,在拖放重构后,图会自动更新,但您从"RefactorThis重构此菜单"调用的其他重构不会更新图;您需要单击图表工具栏上的RefreshTypeDependencies刷新类型依赖关系。
将图导出到图像
在探索依赖关系的任何时候,您都可以将当前视图导出为图像。为此,请单击ExporttoPNG导出到PNG并指定保存图像文件的位置。
探索项目依赖关系图
ReSharper|Architecture|ShowProjectDependencyDiagram显示项目依赖关系图
ReSharper_ShowProjectDependencyGraph通过使用ReSharper,您可以在解决方案体系结构的视觉呈现中探索项目依赖关系。在任何时候,您都可以为您的解决方案获取项目相关性快照并进行研究。请注意,当您更改项目之间的依赖关系时,不会更新项目依赖关系快照-要刷新依赖关系视图,您必须拍摄另一个快照。
该架构视图允许直观地探索项目依赖快照和比较的解决方案的当前状态更早的快照。
右键单击图上的项目,以使用与解决方案资源管理器SolutionExplorer中解决方案节点的上下文菜单中相同的ReSharper项目级命令(包括代码检查,导航,重构和单元测试)。
获取项目依赖关系快照
一个项目依赖快照是解决方案中的所有项目和它们之间的所有依赖关系,在特定时刻拍摄的记录。借助ReSharper,您可以拍摄并保存这些快照。稍后,您可以加载并比较保存的快照和解决方案的当前状态。体系结构视图中提供了依赖性快照的可视化表示。
对于大型解决方案,构建依赖关系图和计算代码度量标准可能需要一些时间。但是,分析是异步执行的,并且不会构建解决方案。因此,您可以在构建图表时继续使用代码。
获取项目相关性快照
-
在SolutionExplorer解决方案资源管理器中,选择一个或多个项目,一个或多个解决方案文件夹或解决方案节点。
-
右键单击选择并选择ShowProjectDependencyDiagram显示项目依赖关系图或选择ReSharper|Architecture|ShowProjectDependencyDiagram显示项目依赖关系图。
-
该架构视图中显示为您最初选择的项目依赖一个新的文档选项卡中打开。
-
最初选定的项目也在ArchitectureView体系结构视图的左侧部分进行检查,其中列出了所有解决方案项目。您可以检查其他项目:它们将出现在图表中,并添加相应的链接。
-
如有必要,您可以使用工具栏中的Groupby分组依据选择器来更改项目分组:
-
None无-所有项目均不显示分组。
-
SolutionFolders解决方案文件夹-项目按解决方案文件夹分组。
-
FileStructure文件结构-项目和解决方案文件夹按文件系统结构分组。
了解项目之间的联系
当你得到一个依赖性快照时,ReSharper分两步进行:
-
根据项目参考构建依赖关系图。即使在大型解决方案中,此步骤也可以快速完成。
-
执行耦合分析以计算参考项目中的用法数量。此步骤可能需要几分钟时间,并在后台运行。分析进度反映在体系结构视图顶部的状态栏中。
默认情况下启用的耦合分析的状态对应于打开/关闭TurnCouplingAnalysis的状态按钮。耦合分析是一个资源密集型过程,可能会影响大型解决方案的性能。如果在使用图表时遇到任何滞后,可以使用此按钮来禁用耦合分析,根据需要调整图表,然后再次启用分析。分析算法首先计算显示项目的耦合度,然后处理隐藏在视图中的项目。图中项目之间的链接可以通过以下方式显示:
线条样式
含义
黑色实线
所述耦合分析或者是正在进行或禁用,所以用途的该参考数是未知的。
特定宽度的蓝色实线
该参考的耦合分析已结束,并且参考项目中至少存在一个用法。线条粗细表示在引用项目中使用引用项目的类型的次数。如果您将鼠标悬停在参考上,则此编号出现在工具提示中。
黑色虚线
该参考的耦合分析已结束,且参考未使用。您可以右键单击它并选择删除它。
绿色虚线
这两个项目通过其他被视为隐藏的引用项目链接在一起。
绿色实线
快照中缺少参考,但它存在于解决方案中。只有显示差异按钮打开时才能出现。
红色实线
该参考存在于快照中,但在解决方案中缺失。只有显示差异按钮打开时才能出现。
显示和隐藏项目
您可以使用左侧相应项目的复选框显示或隐藏图表中的特定解决方案项目(项目,文件夹,解决方案文件夹)。还有几种方法可以直接从图表区域显示/隐藏项目:
-
要选择图表中的某些项目并隐藏其他Ctrl项目,请单击要选择的项目,然后右键单击所选内容并选择Selection|Showonlyselectedmodules选择|只显示选定的模块。
-
要选择两个链接的项目,请右键单击它们之间的链接并选择Selection|Showonlyselectedmodules选择|只显示选定的模块。
-
要隐藏项目,可以在图表中选择它并按Delete。
-
另一种专注于特定项目的方法是显示依赖或引用的项目并隐藏所有其他项目。为此,请选择一个或多个项目(项目或分组项目),右键单击选择并选择ShowThis/TheseandDependent/Referenced显示此/这些和从属/引用。请注意,这些命令仅隐藏不相关的项目,并且不添加任何当前隐藏的引用/依赖节点。
-
要显示由特定项目引用或依赖于特定项目的所有项目,即使这些项目当前对视图隐藏,请选择一个或多个项目并选择Selection|Addreferenced/dependentmodules选择|添加引用/依赖模块。
如有必要,您可以通过单击Undo撤消或按下来逐步反转图表(显示/隐藏项目)中所做的更改Ctrl+Z。要反转Undo撤消命令,请单击Redo重做或按Ctrl+Y。
平移和缩放图
要平移和缩放图表,请使用图表区域左上角的控件。或者,您可以使用滚动条平移图表或在图表项目外的图表区域中单击任意位置,并在显示手形光标时进行拖动。对于缩放,您还可以使用鼠标滚轮。
重新排列图中的项目
图表布局是自动计算的,但您可以根据需要进行更改:所有项目都可以移动。要移动项目,首先点击它进行选择,然后在显示十字光标时单击并拖动它。
在图表上分组项目
使用Groupby选择器,可以按解决方案文件夹或文件系统结构对项目进行分组。分组适用于左侧部分和图表中。如有必要,可以通过以下方式之一折叠和展开图表中的分组项目:
-
点击分组项目左上角的向下箭头。折叠后,标志变成向上箭头,您可以点击它来展开该项目。
-
选择图表,然后按在分组项目Ctrl+Left,Arrow和Ctrl+Right,Arrow。
-
单击工具栏上的"折叠图形"和"展开图形"以折叠或展开所有分组项目。
分析项目参考
要详细了解使用情况,请选择相应的链接,然后按Shift+F12或右键单击并选择ShowUsages显示使用情况。ReSharper将在查找结果窗口中显示用法。
如果对于特定参考的耦合分析已结束,并且ReSharper将其突出显示为未使用(用虚线),则不需要从图中切换以除去未使用的参考-只需选中它并按Ctrl+Shift+R或右键单击并选择Refactor这个。然后按Ctrl+R,D或单击SafeDeleteAssemblyReference安全删除装配参考。
检测可能的架构问题
如果您试图遵循解决方案架构中的最佳实践,则您的应用程序可能具有分层结构,并且各层之间可以相互通信。
该Showpossiblepaths展会可能的路径按钮,可以找出是否应用层设计正确,不仅在分组方面,而且在层与层之间的通信方面。简而言之,当按钮打开时,您可以看到两个特定项目之间是否存在由当前对视图隐藏的其他引用项目组成的路径。这些路径以绿色虚线显示。该按钮仅在有隐藏的中介项目可以链接任何两个当前显示的项目时才能启用。
为了说明它的工作方式,请考虑以下示例:
-
想象一下,我们有一个大的解决方案,现在正在分析由相应的解决方案文件夹代表的'服务'体系结构层。我们展示了我们感兴趣的两个项目,其他项目隐藏起来:
-
两个项目之间没有直接的项目引用,但是,如果我们启用"Showpossiblepaths显示可能的路径"按钮,我们将看到通过其他项目在这些项目之间存在路径:
-
要查看这两个项目如何相互依赖,我们右键单击路径链接并选择Showpath显示路径。中间项目出现在图表上,我们可以看到它们都在另一个层面:
根据这些信息,我们可以看到应用程序结构可能需要重新编制。
将图导出到图像
在探索依赖关系的任何时候,您都可以将当前视图导出为图像。为此,请单击导出到PNG并指定保存图像文件的位置。
将保存的快照与当前解决方案状态进行比较
如果体系结构视图中显示的相关性快照与当前解决方案状态不同,则显示差异按钮变为可用。
如果您想记录解决方案的当前状态,可以将快照保存到文件中。为此,请单击工具栏上的"保存架构图SaveArchitectureGraph",然后选择保存快照文件的位置。
您可以稍后通过选择ReSharper|Architecture|CompareWithSaved...比较。如果使用与当前解决方案相同的解决方案保存快照,您将能够看到解决方案的当前状态与保存在快照中的状态之间的差异。
导航和搜索
ReSharper使您能够通过使用声明,成员,方法调用,继承层次结构,错误等的源代码找到方式。
导航和搜索的范围不限于解决方案的文件:如有必要,您可以在导航或搜索结果中包含来自参考库的符号。
或者,您可以在预览选项卡中打开您导航到的每个新文件。为此,请Opennewfilesinpreviewtabfromeverywhere预览选项卡中打开新文件Environment|Search&Navigation页面。
您可以从编辑器的任意位置,从ObjectBrowser,SolutionExplorer,ClassView,对象浏览器,解决方案资源管理器,类视图,文件结构窗口,查找结果窗口和其他ReSharper工具窗口开始导航。
导航和搜索命令在ReSharper|NavigateandReSharper|Find菜单。
根据您的任务,不同的ReSharper导航和搜索功能可以帮助您:
-
如果您需要按名称在解决方案或引用的库中查找任何内容,请研究"按名称导航"部分中的命令。
-
如果您需要转到与当前代码符号相关的任何项目,请研究从符号导航部分中的命令。
-
ReSharper还提供了一个通用NavigateToshortcut导航至快捷键,用于对当前插入符号位置的所有导航选项进行分组。要了解有关此快捷方式的更多信息,请参阅导航到部分。
-
根据编辑器中当前的脱字号位置,ReSharper可以提供很多相关的导航选项。要详细了解这些选项,请参阅上下文导航。
-
ReSharper会跟踪您的操作和导航历史记录,并提供各种命令,让您可以导航到之前的地方。有关更多信息,请参阅导航到最近的位置。
-
此外,ReSharper提供了其他导航方式:
有关ReSharper在编辑器中突出显示的代码错误,警告和建议之间的导航指南,请参阅在设计时检测代码问题。
-
待办事项帮助您和您的团队成员以方便的方式组织您的工作,并轻松检索需要注意的源代码位置。有关更多信息,请参阅使用待办事项列表。
-
所述堆栈跟踪浏览器窗口,它使用户能够从一个堆栈跟踪源代码中的错误位置导航,从而查明故障。有关更多信息,请参阅从堆栈跟踪导航到例外。
大多数ReSharper的导航和搜索功能都可以在C#和VisualBasic.NET中使用,其中一些可以使用多种语言,其他则使用特定语言。下表列出了支持它们的所有导航和搜索功能以及语言/技术。
C++支持可以通过ReSharperC++获得-这是一种专用产品,您可以单独安装,也可以与ReSharper或ReSharperUltimate一起安装。
本节主题中的说明和示例介绍了在C#中使用导航和搜索功能的方法。有关可用于特定语言的导航和搜索功能的更多信息,请参阅"按语言排列的ReSharper"部分中的相应主题。
按名称导航
ReSharper使您能够通过使用声明,成员,方法调用,继承层次结构,错误等的源代码找到自己的方式。
按Ctrl+T随后在"转到一切","转到类型"和"转到文本"命令之间进行迭代。
按项目名称查找解决方案中的项目
- 要使用对所有搜索结果的统一访问权限,请按Ctrl+T以显示弹出窗口,您可以在其中开始输入内容,并在解决方案中查找与您的输入相匹配的所有内容。
- 如果您想限制搜索类型(类,接口,结构或枚举),请按Ctrl+T两次。
- 如果您想通过纯文本匹配查找任何内容,请按Ctrl+T三次。
- 如果您想搜索符号(类型,方法,属性,字段等)-按Shift+Alt+T。
- 可以将搜索范围限制为解决方案中文件Ctrl+Shift+T。
- ReSharper跳转到类型并键入当前文件中成员按下后键入其名称Alt+。
- 调用上述任何命令之后,开始输入目标项目,其CamelHumps缩写和/或通配符。匹配项目列表将在您输入时缩小范围,最可能的候选项将显示在列表顶部。
-
只要目标项目出现在列表中,您可以选择它在编辑器中打开它。要在"查找结果"窗口中查看和分析匹配项目的列表,请单击ShowinFindResults在查找结果中显示,按或在数字小键盘+。Shift+Enter
ReSharper可以选择性地记住您用来查找某些内容的最后一个输入,其中包括转到Everything/Type,GoToFile和GotoText操作。要启用此行为,请选择在Rememberlastsearch记住上次搜索Environment|SearchandNavigation搜索和导航页面。当选择此选项时,ReSharper也将在编辑器中使用您的选择作为搜索字符串。例如,您可以在字符串中选择一个文件名,然后按Ctrl+Shift+T在您的解决方案中搜索与此名称匹配的文件。
您可以从导航结果中排除文件和文件夹。为此,请在Elementstoskip元素跳过部分中指定这些项目Environment|Search&Navigation搜索和导航页面。
去所有/类型GotoEverything/Type
ReSharper|Navigate|GotoEverything/Type…去所有/类型...
Ctrl+T
ReSharper_GotoType该命令结合了两个不同的功能:
-
GotoEverything转到所有内容,允许您导航到以下目标:源文件和文本文件中的类型,符号,文件,字符串文字,最近的编辑,最近的文件和最近查看的方法。只要您调用此功能,就会立即显示建议列表,并且最初包含您最近的文件和导航项目。
-
GotoType转到类型,这是第二次按下Ctrl+T或从菜单中调用命令时出现的,允许您导航到任何类型。
您可以从导航结果中排除文件和文件夹。为此,请Elementstoskip元素跳过部分中指定这些项目Environment|Search&Navigation搜索和导航页面。
默认情况下,将文本导航集成到GotoEverything-ReSharper将在结果列表末尾显示与查询字符串匹配的文本,匹配类型,符号和文件后。您可以通过在IntegrateGotoTextintoSearchEverywhere集成转到文本搜索到任何地方来禁用此行为Environment|Search&Navigation搜索和导航页面。
如果禁用此选项,则可以通过按导航到文本Ctrl+T三次。使用这些功能,您可以搜索整个解决方案中符号和文件中的项目以及解决方案项目中引用的所有组件。搜索结果还包括来自当前在AssemblyExplorer窗口中加载的所有程序集的匹配项目。
请注意,此命令在全局范围内起作用,也就是说,您不需要将注意力集中到编辑器上就可以调用它。
导航到所有内容或类型
- 按Ctrl+T或选择ReSharper|Navigate|GotoEverything/Type…全部/类型...。或者,您可以按Ctrl+Shift+A,在弹出窗口中开始输入命令名称,然后在那里选择它。
- 在出现的SearchEverywhere搜索无处不在弹出列表中,开始输入项目名称。在您键入时,项目列表会缩小,表明与输入的子字符串匹配的名称。
- 要进一步缩小项目列表的范围,您可以键入/以应用过滤器。例如,您可以键入/me以仅显示事件。请注意,您可以在搜索查询之前和之后键入过滤器。
- 要切换到"转到类型GotoType"功能,请单击菜单命令或再次按快捷键。在Entertypename输入类型名称的弹出列表出现在那里你可以指定你正在寻找一个类型。
- 或者,选择Includelibrarytypes包含库类型或按下Alt+N显示解决方案中引用的库中的匹配项目。
默认情况下,只要您的输入与您的解决方案中的内容匹配,就只显示解决方案项目。如果在解决方案中没有匹配您的输入,ReSharper会自动开始查找匹配的库类型。 - 执行以下操作之一:
- 点击所需的项目在编辑器中打开它。
- 按Up,选择所需的项目Down,然后按Enter在编辑器中打开它。
-
如果您导航的项目属于当前的解决方案,ReSharper将在编辑器中打开相应的文件,并将插入符号放在符号声明中。如果在引用的库中找到它,ReSharper根据Tools|ExternalSources外部源页面。
您可以使用CamelHumps缩小项目的范围。它是不区分大小写的,所以rtbf和RTBF之间没有区别。ReSharper总是在列表顶部显示最近访问的项目,并以绿色突出显示它们。
ReSharper还可以按任意顺序查找与查询部分相匹配的项目。例如,搜索exactMatching将匹配isMatchingExactly:
如果要搜索完全匹配,请使用引号:查找"Collection"将返回Collection但不会返回FilteredCollection,IterateCollection()等等。但是,在使用精确搜索过滤掉复合名称时,仍然可以使用通配符符号*和?允许完全一样多的变化如你所需。如果要导航到某个类型(例如,按其完全限定名称),请键入部分名称并用空格或点分隔它们。考虑下面的例子:
指定名称时也可以使用通配符:(*星号)代表零个或多个字符;+(加号),:(分号),.(点)和(反斜杠)分开的类型完全限定名称的部分。
要在搜索文件中指定一行,请在:(冒号)后面输入它。
每当收集项目以匹配指定的字符串需要很长时间时,ReSharper会在搜索字符串的右侧显示一个沙漏图标。在ReSharper完全加载解决方案之前执行搜索时,预计会出现实质性延迟。
要禁用"GotoEverything转至所有内容"功能并仅导航至类型,请清除Enable'GotoEverything'转至所有内容"复选框Environment|Search&Navigation搜索和导航页面。
ReSharper可以选择性地记住您用来查找某些内容的最后一个输入,其中包括转到Everything/Type,GoToFile和GotoText操作。要启用此行为,请选择Rememberlastsearch记住上次搜索Environment|SearchandNavigation搜索和导航页面。当选择此选项时,ReSharper也将在编辑器中使用您的选择作为搜索字符串。
转到文件
ReSharper|Navigate|GoToFile转到文件
Ctrl+Shift+T
ReSharper_GotoFile您可以从导航结果中排除文件和文件夹。ReSharper|Navigate|GoToFile元素跳过部分中指定这些项目ReSharper选项的搜索和导航页面。
该命令将您导航到当前解决方案中的任何文件。
请注意,此命令在全局范围内起作用,也就是说,您不需要将注意力集中到编辑器上就可以调用它。
转到当前解决方案中的文件
- 在主菜单中,选择ReSharper|Navigate|GoToFile转到文件或按Ctrl+Shift+T。
- 在出现的输入文件或文件夹名称弹出窗口中,开始输入项目名称。在您键入时,查找列表缩小,提示与输入的子字符串匹配的名称。
- 执行以下操作之一:
- 点击所需的项目在编辑器中打开它。
- 按Up,选择所需的项目Down,然后按Enter在编辑器中打开它。
-
您可以使用CamelHumps缩小项目的范围。它不区分大小写,所以'iconfse'和'IConfSe'没有区别。
如果要导航到特定文件夹中的文件,可以键入部分文件路径并使用空格,斜杠或反斜杠来分割它们。考虑下面的例子:
指定名称时也可以使用通配符:'*'(星号)表示零个或多个字符;'+'(加号)表示一个或多个字符。要在搜索文件中指定一行,请在a:(冒号)之后键入
每当收集项目以匹配指定的字符串需要很长时间时,ReSharper会在搜索字符串的右侧显示一个沙漏图标。在ReSharper完全加载解决方案之前执行搜索时,预计会出现实质性延迟。
。
ReSharper可以选择性地记住您用来查找某些内容的最后一个输入,其中包括转到Everything/Type,GoToFile和GotoText操作。要启用此行为,请选择在环境|上记住上次搜索Environment|SearchandNavigation搜索和导航页面。当选择此选项时,ReSharper也将在编辑器中使用您的选择作为搜索字符串。例如,您可以在字符串中选择一个文件名,然后按Ctrl+Shift+T在您的解决方案中搜索与此名称匹配的文件。
转到文件成员
ReSharper|Navigate|GotoFileMember…转到文件成员...
Alt+
ReSharper_GotoFileMember此命令将不会呈现任何的结果,如果当前的文件是从搜索忽略,即加入Elementstoskip元素跳过Environment|Search&Navigation搜索和导航页面。
您可以使用此命令快速导航到当前文档(可以是源文件或通过反编译重建的文件)中的特定方法,字段,属性等。
导航到文件成员
- 按Alt+或选择ReSharper|导航|转到主菜单中的文件成员...。或者,您可以按Ctrl+Shift+A,在弹出窗口中开始输入命令名称,然后在那里选择它。
-
在出现的输入成员名称弹出窗口中,开始输入项目名称。在您键入时,查找列表缩小,提示与输入的子字符串匹配的名称。
- 或者,选择Includemembersfromrelatedfiles包含来自相关文件的成员,或者Alt+N如果要包含来自基类的成员,来自此类其他部分的成员(如果此类为部分成员)或来自其他参考文件,请按。
- 执行以下操作之一:
- 点击所需的项目在编辑器中打开它。
- 按Up,选择所需的项目Down,然后按Enter在编辑器中打开它。
-
如果您只想搜索构造函数,请在搜索框中输入neworctor(尾随空格)作为过滤器。
要仅显示具有特定访问修饰符的成员,请输入此修饰符。例如,键入private以显示私人成员
您可以使用CamelHumps缩小项目的范围。它是不区分大小写的,所以'gx'和'GX'之间没有区别。
每当收集项目以匹配指定的字符串需要很长时间时,ReSharper会在搜索字符串的右侧显示一个沙漏图标。在ReSharper完全加载解决方案之前执行搜索时,预计会出现实质性延迟。
指定名称时也可以使用通配符:'*'(星号)表示零个或多个字符;'+'(加号)表示一个或多个字符。
GotoSymbol去符号
ReSharper|Navigate|GotoSymbol…去符号...
Shift+Alt+T
ReSharper_GotoSymbol您可以从导航结果中排除文件和文件夹。为此,请在环境|中的元素跳过部分中Environment|Search&Navigation搜索和导航页面。
此命令允许按名称搜索整个解决方案中符号和文件中的任何代码符号以及解决方案项目中引用的所有程序集。搜索结果还包括来自当前在AssemblyExplorer窗口中加载的所有程序集的匹配项目。
请注意,此命令在全局范围内起作用,也就是说,您不需要将注意力集中到编辑器上就可以调用它。
导航到一个符号To navigate to a symbol
- 按Shift+Alt+T或选择ReSharper|Navigate|GotoSymbol…转到主菜单中的符号...。或者,您可以按Ctrl+Shift+A,在弹出窗口中开始输入命令名称,然后在那里选择它。
- 在出现的Entersymbolname输入符号名称弹出窗口中,开始输入项目名称。在您键入时,查找列表缩小,提示与输入的子字符串匹配的名称。
- 或者,选择Includelibrarytypes包含库类型或按下Alt+N显示解决方案中引用的库中的匹配项目。
默认情况下,只要您的输入与您的解决方案中的内容匹配,就只显示解决方案项目。如果在解决方案中没有匹配您的输入,ReSharper会自动开始查找匹配的库类型。 - 执行以下操作之一:
- 点击所需的项目在编辑器中打开它。
- 按Up,选择所需的项目Down,然后按Enter在编辑器中打开它。
-
如果您导航的项目属于当前的解决方案,ReSharper将在编辑器中打开相应的文件,并将插入符号放在符号声明中。如果在引用的库中找到它,ReSharper根据Tools|ExternalSources页面。
您可以使用CamelHumps缩小项目的范围。这是不区分大小写的,所以'actta'和'ACTTA'之间没有区别。
如果要导航到特定类型的符号,可以指定类型的完全限定名称和成员名称的各个部分,并用空格或点分隔它们。考虑下面的例子:
指定名称时也可以使用通配符:'*'(星号)表示零个或多个字符;'+'(加号)表示一个或多个字符。
每当收集项目以匹配指定的字符串需要很长时间时,ReSharper会在搜索字符串的右侧显示一个沙漏图标。在ReSharper完全加载解决方案之前执行搜索时,预计会出现实质性延迟。
转到文字
ReSharper|导航|转到文字...
ReSharper_GotoText按Ctrl+T随后在"转到一切","转到类型"和"转到文本"命令之间进行迭代。
Ctrl+T3次
此导航命令可让您快速查找并导航到解决方案源文件和文本文件中的任何文本。除了支持的语言文件,你可以找到以下类型的内容文件中的文本:.bat,.ps1,.md,.txt,.sql,.rb,.php,.py,.java,.jsp,.kt,.ini,.fx,.less,.hbs,.coffee,.scss,.dart,.as,.styl。该命令的工作速度通常比VisualStudio的本地FindinFiles快得多命令,但作为缺点,它不支持正则表达式。
您可以从导航结果中排除文件和文件夹。为此,请在环境|中的元素跳过部分中指定这些项目ReSharper选项的搜索和导航页面。
默认情况下,导航到文本已集成到Go(全部)(Ctrl+T)-ReSharper将在结果列表末尾显示与查询字符串匹配的文本出现,在所有匹配的类型,符号和文件之后。您可以通过在IntegrateGotoTextintoSearchEverywhereontheEnvironment|Search&Navigation禁用页面。
如果您不喜欢该命令的默认快捷方式(3xCtrl+T),则可以在VisualStudio选项中进行更改:转到工具|选项|环境|键盘,ReSharper_GotoText在列表中找到命令并为其分配所需的快捷键。
请注意,此命令在全局范围内起作用,也就是说,您不需要将注意力集中到编辑器上就可以调用它。
导航到代码和文本文件中的文本发生
- 按Ctrl+T3次或选择ReSharper|导航|转到主菜单中的文字...
- 在出现的查找文本弹出窗口中,开始输入要查找的文本。在您键入时,查找列表缩小,表明与输入的文本匹配的条目。
- 如果您在当前的VisualStudio会话期间使用此命令进行了导航,则搜索字段为空时,用于搜索的最后10个字符串将显示在下拉列表中。
如果在编辑器中选择了某些文本或从VisualStudio复制到剪贴板中,它将显示在搜索字段中。 - 默认情况下,文本字段在这里不区分大小写。如有必要,请单击匹配大小写以使搜索区分大小写。
- 或者,您可以在搜索查询之前或之后键入以下过滤器:
- /ext:-限制搜索具有特定扩展名的文件,例如,/ext:csextension
- /fm:-限制搜索匹配特定掩码的文件,例如,/fm:I*.csfilesmask
- /cp-限制在当前项目中搜索文件currentproject。
- 执行以下操作之一:
- 点击所需的项目在编辑器中打开它。
- 按Up,选择所需的项目Down,然后按Enter在编辑器中打开它。
-
每当收集项目以匹配指定的字符串需要很长时间时,ReSharper会在搜索字符串的右侧显示一个沙漏图标。在ReSharper完全加载解决方案之前执行搜索时,预计会出现实质性延迟。
ReSharper可以选择性地记住您用来查找某些内容的最后一个输入,其中包括转到Everything/Type,GoToFile和GotoText操作。要启用此行为,RememberlastsearchontheEnvironment|SearchandNavigation记住上次搜索。当选择此选项时,ReSharper也将在编辑器中使用您的选择作为搜索字符串。
从符号导航NavigationfromSymbols
从任何代码符号,ReSharper都可以为您带来它的声明,实现,用法等等。您可以从编辑器中的符号用法或声明,文件结构窗口以及其他一些ReSharper工具窗口开始导航。导航的范围是整个解决方案中的符号和文件以及解决方案项目中引用的所有程序集。请参阅编译代码中的导航和搜索以了解如何在编译程序集内执行导航。
如果您的目的地有多个导航位置,您可以在"查找结果"窗口中打开它们并使用其功能进一步导航(有关更多信息,请参阅分析搜索结果)。
去宣言GotoDeclaration
ReSharper|导航|去宣言
F12
ReSharper_GotoDeclaration您还可以导航到某种方法的变量类型或返回类型的声明。有关更多信息,请参阅转到符号类型。
该命令允许您从任何符号用法导航到符号的声明。您可以从编辑器,文件结构窗口和其他工具窗口中调用此命令。
要以相反的方向导航(符号用法),您可以在符号声明中调用"转至声明"命令,也可以使用"转至符号使用"命令。如果您从方法或属性(在接口中声明)的使用中进行导航,则该命令将使您不会看到接口本身,而是看到所使用的确切实现。
默认情况下,转到声明使用Ctrl+左键单击。要禁用此功能,请清除复选框。
导航到符号的声明Tonavigatetoadeclarationofasymbol
- 将插入符号放在编辑器中的符号上,或者在工具窗口中选择符号。
- 选择ReSharper|Navigate|GotoDeclaration转到主菜单中的声明,按F12,或者点击拿着Ctrlclickthesymbol符号。
- 如果符号只有一个声明,ReSharper将直接导航到它。
- 如果符号有几个声明(例如它是一个分类),它们将在下拉列表中列出。执行以下操作之一:
- 点击所需的项目在编辑器中打开它。
- 按Up,选择所需的项目Down,然后按Enter在编辑器中打开它。
-
该命令在"导航到"快捷方式中也可用。
如果您导航的项目属于当前的解决方案,ReSharper将在编辑器中打开相应的文件,并将插入符号放在符号声明中。如果在引用的库中找到它,Tools|ExternalSources外部源页面。
使用感知行为Usage-awarebehavior
由于GotoDeclaration转到声明是最常用的命令之一,ReSharper简化了您的导航体验,允许您在与声明的符号的用法相关的导航场景中使用此命令:
使用感知行为默认启用。如果您想禁用它,请清除Enable'Smartgotodeclaration'启用'智能去声明'复选框ReSharper选项的搜索和导航页面。
-
当您的脱字符号已在符号声明处时,您可以调用GotoDeclaration命令。在这种情况下,ReSharper将显示NavigateTo菜单的简短版本,其中只包括迭代用法和用于导航到继承层次结构(基本符号,派生符号)中的其他成员的命令的命令。
如果您在"IterateusagesintheNavigateto导航到"菜单中选择迭代用法,则ReSharper启用编辑器左上角的小弹出窗口指定的"使用迭代"模式:
-
在对符号用法使用GotoDeclaration命令并落在其声明后,ReSharper启用"返回使用"模式,该模式也显示在弹出窗口中:
在这种情况下,您可以再次调用GotoDeclaration或使用弹出窗口()中的下一个箭头Ctrl+Alt+PageDown返回用法。如果您再次重复此命令,ReSharper将切换'使用迭代'模式。
您可以通过按下Esc键或在使用迭代弹出窗口中单击关闭(x)来退出"返回使用情况"和"使用情况迭代"模式。
在'使用迭代'模式中,您可以按如下方式浏览符号用法:
-
调用GotoDeclaration以进入下一个用法(如果有的话)等等,随后浏览所有符号用法。解决方案中符号使用的总数显示在使用迭代弹出窗口中。
-
使用迭代弹出窗口(/)中的Next和Back按钮可以转到下一个和上一个用法。Ctrl+Alt+PageDownCtrl+Alt+PageUp
-
要在"查找结果"窗口中查看和分析匹配项目的列表,请单击在查找结果中显示,按或在数字小键盘上。Shift+Enter+
-
要浏览当前文档中的符号用法,请单击标记栏顶部的图标。
转到符号类型
ReSharper|Navigate|TypeofSymbol符号类型
Ctrl+Shift+F11
ReSharper_GotoTypeDeclaration当转到声明命令将您导航到声明符号的位置时,符号类型命令将导航到当前选定符号类型的声明。例如,如果您有一个变量FoomyVar=newFoo();并根据用法调用此命令myVar,它将带您进入该类的声明Foo。如果你在一个函数上调用这个命令,它将导航到该函数的返回类型。
对于泛型类型的变量,该命令允许您导航到泛型类型声明以及所有泛型参数的声明。例如,假设你有一个类型classMyGeneric<X,Y>和这种类型的变量varmyGeneric=newMyGeneric<Author,Book>();。对任何使用调用此命令myGeneric,您将能够选择之间的导航目的地MyGeneric,Author以及Book类。
您可以从编辑器,文件结构窗口和其他工具窗口中调用此命令。
该命令在"导航到"快捷方式中也可用。
导航到符号的类型
- 将插入符号放在编辑器中的符号上,或者在工具窗口中选择符号。
- 按Ctrl+Shift+F11或选择ReSharper|Navigate|TypeofSymbol符号类型。或者,您可以按Ctrl+Shift+A,在弹出窗口中开始输入命令名称,然后在那里选择它。
- 如果符号的类型只有一个声明,ReSharper将直接导航到它。
- 如果有多个声明(例如,在部分声明的情况下),它们将被列在下拉列表中。执行以下操作之一:
- 点击所需的项目在编辑器中打开它。
- 按Up,选择所需的项目Down,然后按Enter在编辑器中打开它。
-
如果您导航的项目属于当前的解决方案,ReSharper将在编辑器中打开相应的文件,并将插入符号放在符号声明中。如果在引用的库中找到它,ReSharper根据Tools|上定义的设置进行导航ReSharper选项的外部源页面。
转到符号的使用GotoUsagesofSymbol
ReSharper|Navigate|UsagesofSymbol符号的用法
Shift+Alt+F12
ReSharper_GotoUsage该命令允许您快速导航到其声明或任何其他用法的符号的特定用法。您可以从编辑器,文件结构窗口和其他工具窗口中调用此命令。GotoDeclaration命令提供了相反的导航。
如果您调用此命令并查看使用率搜索时间过长,则可以单击在查找结果中显示,按Shift+Enter或+在数字小键盘上-搜索将在查找结果窗口的后台继续。
您使用此命令获得的用法列表与查找用法相同。但是,对于使用次数有限的符号,此命令更方便,在这种情况下,当您正在查找特定用途并希望在不打开"查找结果"窗口的情况下使用此用法。
您可以使用GotoDeclaration命令的使用感知行为来浏览符号用法。
您可以为发现单个使用情况的情况配置ReSharper行为。默认情况下,用法显示在弹出窗口中。如果您希望ReSharper在这些情况下跳转单次使用,请在Environment|Environment中选择相应的选项(GotoUsage:ifthereisonlyoneresult,navigatewithoutdisplayingthelist如果只有一个结果,则浏览而不显示列表)ReSharper选项的搜索和导航页面。
该命令在"导航到"快捷方式中也可用。
Tonavigatetoausageofasymbol导航到符号的用法
- 将插入符号放在编辑器中的符号上,或者在工具窗口中选择符号。
- 按Shift+Alt+F12或选择ReSharper|导航|主菜单中符号的用法。或者,您可以按Ctrl+Shift+A,在弹出窗口中开始输入命令名称,然后在那里选择它。
- 如果符号只有一个用法,ReSharper将直接导航到它。
否则,发现用法及其上下文出现在弹出窗口中。执行以下操作之一: - 点击所需的项目在编辑器中打开它。
- 按Up,选择所需的项目Down,然后按Enter在编辑器中打开它。
- 开始输入来过滤结果。请注意,您可以在这里使用CamelHumps。如有必要,请按Esc一下清除筛选。
- 要在"查找结果"窗口中查看和分析匹配项目的列表,请单击在查找结果中显示,按或在数字小键盘上。Shift+Enter+
-
要显示类型依赖关系图上的匹配项目,请按Alt+Num+或单击在关系图上显示。
转到基本符号BaseSymbols
ReSharper|Navigate|BaseSymbols基本符号
Alt+Home
ReSharper_GotoBase或者导航,您可以直观地浏览符号的完整继承层次结构。
该命令允许您将继承层次结构导航到当前符号的基本类型或方法。您可以从编辑器,文件结构窗口和其他工具窗口中调用此命令。
在转到衍生符号和转到执行命令中可以使用相反的方向导航。该命令在"导航到"快捷方式中也可用。
导航到基本符号
- 将插入符号放在编辑器中的符号上,或者在工具窗口中选择符号。
- 按Alt+Home或选择ReSharper|Navigate|BaseSymbols基本符号。或者,您可以按Ctrl+Shift+A,在弹出窗口中开始输入命令名称,然后在那里选择它。
- 如果所选符号有一个基本符号,ReSharper将直接导航到它。
如有必要,您可以更改默认行为,以便即使单个符号也显示在下拉列表中。为此,清除GotoBase/Inheritorifthereisonlyone...转到基本/继承器(如果只有一个...)复选框ReSharper选项的搜索和导航页面。 - 如果所选符号具有多个基本符号,则它们将列在下拉列表中。下拉列表可能包含粗体和常规字体的项目。粗体表示一个项目具有直接继承,而常规字体用于间接继承。
您可以执行以下任一操作: - 点击所需的项目在编辑器中打开它。
- 按Up,选择所需的项目Down,然后按Enter在编辑器中打开它。
- 开始输入来过滤结果。请注意,您可以在这里使用CamelHumps。如有必要,请按Esc一下清除筛选。
- 要在"查找结果"窗口中查看和分析匹配项目的列表,请单击在查找结果中显示,按+或在数字小键盘上。Shift+Enter
-
要显示类型依赖关系图上的匹配项目,请按Alt+Num+或单击在关系图上显示。
如果方法重写,实现或隐藏另一个方法,则可以通过出现在方法声明左侧的特殊图标(例如,)来看到它。将鼠标悬停在此图标上可查看此方法的基本类型;单击该图标以浏览方法层次结构。
如果您导航的项目属于当前的解决方案,ReSharper将在编辑器中打开相应的文件,并将插入符号放在符号声明中。如果在引用的库中找到它,Tools|ExternalSources外部源页面。
GotoImplementation转到实施
ReSharper|Navigate|GoToImplementation转到实施
Ctrl+F12
ReSharper_GotoImplementations或者导航,您可以直观地浏览符号的完整继承层次结构。
该命令允许您从基本类型或成员跳转到其任何最终实现,绕过继承链中的中间步骤。换句话说,它与GotoDerivedSymbols类似,但它不显示抽象类和接口。
您可以从编辑器,文件结构窗口和其他工具窗口中调用此命令。如有必要,可以使用转到基本符号命令以相反的方向导航。
该命令在"导航到"快捷方式中也可用。
导航到类型或类型成员的实现Tonavigatetoimplementationofatypeortypemember
- 将插入符号放在编辑器中的符号上,或者在工具窗口中选择符号。
- 选择ReSharper|Navigate|GoToImplementation实施,按Ctrl+F12,或者点击保持Ctrl+Alt键的符号。
- 如果符号只有一个实现,ReSharper将直接导航到它。
如有必要,您可以更改默认行为,以便即使单个符号也显示在下拉列表中。为此,请清除GotoBase/Inheritorifthereisonlyone..转到基本/继承器(如果只有一个...)复选框ReSharper选项的搜索和导航页面。 - 如果符号有多个实现,它们将列在下拉列表中。下拉列表可能包含粗体和常规字体的项目。粗体表示一个项目具有直接继承,而常规字体用于间接继承。
您可以执行以下任一操作: - 点击所需的项目在编辑器中打开它。
- 按Up,选择所需的项目Down,然后按Enter在编辑器中打开它。
- 开始输入来过滤结果。请注意,您可以在这里使用CamelHumps。如有必要,请按Esc一下清除筛选。
-
如果您导航的项目属于当前的解决方案,ReSharper将在编辑器中打开相应的文件,并将插入符号放在符号声明中。如果在引用的库中找到它,ReSharper根据TTools|ExternalSources外部源页面。
以下是GotoImplementation绕过中间步骤的示例。假设该IDocument接口具有以下继承者:
当您在声明或使用时调用GotoImplementation时IDocument,ReSharper只显示两个继承者:
这是因为其他类是抽象的,并且不包含实现IDocument。
转到派生符号GotoDerivedSymbols
ReSharper|Navigate|DerivedSymbols派生符号
Alt+End
ReSharper_GotoInheritors或者导航,您可以直观地浏览符号的完整继承层次结构。
该命令获取当前符号的派生符号列表,并让您直接导航到它们中的一个,沿着继承层次结构。有一个类似的命令,GotoImplementation,它只列出了实现,没有继承链中的中间步骤。
您可以从编辑器,文件结构窗口和其他工具窗口中调用此命令。如有必要,可以使用转到基本符号命令以相反的方向导航。
该命令在"导航到"快捷方式中也可用。
导航到派生符号Tonavigatetoderivedsymbols
- 将插入符号放在编辑器中的符号上,或者在工具窗口中选择符号。
- 按Alt+End或选择ReSharper|Navigate|DerivedSymbols派生符号。或者,您可以按Ctrl+Shift+A,在弹出窗口中开始输入命令名称,然后在那里选择它。
- 如果符号只有一个派生符号,ReSharper会直接导航到它。
如有必要,您可以更改默认行为,以便即使单个符号也显示在下拉列表中。为此,清除GotoBase/Inheritorifthereisonlyone...环境|中的转到基本/继承器(如果只有一个...)。 - 如果有多个衍生符号,它们将显示在下拉列表中。下拉列表可能包含粗体和常规字体的项目。粗体表示一个项目具有直接继承,而常规字体用于间接继承。
您可以执行以下任一操作: - 点击所需的项目在编辑器中打开它。
- 按Up,选择所需的项目Down,然后按Enter在编辑器中打开它。
- 开始输入来过滤结果。请注意,您可以在这里使用CamelHumps。如有必要,请按Esc一下清除筛选。
- 要在"查找结果"窗口中查看和分析匹配项目的列表,请单击在查找结果中显示,按+或在数字小键盘上。Shift+Enter
-
要显示类型依赖关系图上的匹配项目,请按Alt+Num+或单击在关系图上显示。
在当前解决方案中,当类型或成员具有继承者时,可以通过出现在声明左侧的特殊图标(例如,)来看到它。将鼠标悬停在该图标上可查看继承者,或单击图标以展开派生符号列表并导航。
导航
ReSharper|导航|导航
Alt+`
ReSharper_NavigateTo导航至是大多数导航需求的单一快捷方式。它会打开一个包含所有上下文可用导航目标的下拉列表。您可以从编辑器,文件结构窗口和其他工具窗口中调用此命令。
查看上下文可用的导航操作
- 将插入符号放在编辑器中的符号上,或者在工具窗口窗口中选择符号,或者在插入编辑器的任意位置设置插入符号。
- 按Alt+`或选择ReSharper|Navigate|NavigateTo…导航至...。或者,您可以按Ctrl+Shift+A,在弹出窗口中开始输入命令名称,然后在那里选择它。
- 在显示的导航至下拉列表中,您将看到所有相关的导航选项。
- 从列表中选择一个选项并点击它或按Enter。
-
如果选择的选项有单个目的地,ReSharper会立即带您到达目的地,如果有多个目的地,另一个下拉列表将打开,为您提供更多选择。您可以学习相应的主题之一,以了解有关所选导航选项的更多信息。
导航到程序集资源管理器
ReSharper|Navigate|NavigateTo|LocateinAssemblyExplorer
Alt+`|在AssemblyExplorer中找到如果必要的话,可以使大会浏览器的隐式导航到编译代码,默认的导航选项(例如,当你申报的System.String)。要了解如何操作,请参阅编译代码中的导航和搜索。
该命令使用AssemblyExplorer窗口帮助您检查库类型(研究它们的成员,基类型,继承者等)。当您在源代码中的库符号和反编译的源上调用NavigateTo时,该命令可用。您可以从编辑器,文件结构窗口和其他工具窗口中调用此命令。
当您使用反编译的代码时,您可以通过按下它们在AssemblyExplorer中找到符号。Shift+Alt+L
您还可以直接从解决方案资源管理器中的引用程序集列表中打开程序集资源管理器中的程序集:
导航到冲突声明
ReSharper|Navigate|NavigateTo|ConflictingDeclaration(s)相互冲突的宣言
Alt+`|冲突声明(S)
ReSharper_NavigateToDeclarationConflict此命令导航到当前范围中具有相同签名的成员。如果只有一个冲突声明,ReSharper将在那里设置插入符号;如果有多个冲突声明,它们都将显示在下拉列表中,您可以从中选择一个。
当您在突出显示为错误的冲突成员声明上调用导航至时,该命令可用:
导航至控制流量目标
ReSharper|Navigate|NavigateTo|ControlFlowTarget控制流程目标
Alt+`|控制流量目标
ReSharper_NavigateToControlFlowTarget该命令从编辑器位置导航到下一个控制流接收者。当你调用它变为可用导航要在foreach,yield,跳转语句(break,continue,goto,return),或throw语句。
例如,在下面的代码片段中,在语句中选择控制流目标goto将插入符号带入error标签:
导航到反编译源
ReSharper|Navigate|NavigateTo|DecompiledSources反编译来源
Alt+`|反编译来源
ReSharper_NavigateToDecompiledSources如果您只需分析从元数据重建的符号的签名,请使用导航至元数据视图命令。如果您需要分析其原始源文件中的符号,请使用从符号文件导航到源。
该命令允许您导航到通过反编译重建的库类型和方法的声明。反编译的源代码在编辑器中显示为重建的源文件,处于只读模式。所有相关的ReSharper的导航和搜索命令都可以在反编译视图中找到。
当您在源代码中的库符号和反编译的源上调用NavigateTo时,该命令可用。您可以从编辑器,文件结构窗口和其他工具窗口中调用此命令。如果有必要,你可以反编译来源隐式导航到编译代码,默认的导航选项(例如,当你去申报的System.String)。要了解如何操作,请参阅编译代码中的导航和搜索。
如果目标符号包含XML文档注释,则它们将包含在反编译的源代码中。
如果在工具|中选择了默认VisualStudio导航,则此命令不可用要使其可用,请选择该组中的任何其他选项。
NavigateToExposingAPIs导航到公开API
ReSharper|导航|导航到|公开API
Alt+`|公开API
ReSharper_ExposingApiesNavigation该命令允许您从一个类型导航解决方案中的所有地方,你可以得到这个类型的实例:public字段和属性,方法的返回值,输出参数,等等。当你调用命令变为可用定位到上声明或来自解决方案或任何库类型的任何类型的用法。您可以从编辑器,文件结构窗口和其他工具窗口中调用此命令。
如果该命令返回单个结果,则ReSharper会直接在那里导航。如果有多个结果,它们将列在下拉列表中,您可以在其中执行以下操作之一:
-
点击所需的项目在编辑器中打开它。
-
按Up,选择所需的项目Down,然后按Enter在编辑器中打开它。
-
开始输入来过滤结果。请注意,您可以在这里使用CamelHumps。如有必要,请按Esc一下清除筛选。
-
ToviewandanalyzethelistofmatcheditemsintheFindResultswindow,clickShowinFindResults,pressShift+Enteror+onthenumerickeypad.
-
要显示类型依赖关系图上的匹配项目,请按Alt+Num+或单击在关系图上显示。
NavigateToExtensionMethod导航到扩展方法
ReSharper|Navigate|NavigateTo|ExtensionMethods扩展方法
Alt+`|扩展方法
ReSharper_NavigateToExtensionMethods此命令允许您从声明或类型用法导航到解决方案中为此类型定义的所有扩展方法。当您在类型的声明和用法上调用NavigateTo时可用。您可以从编辑器,文件结构窗口和其他工具窗口中调用此命令。
如果该命令返回单个结果,则ReSharper会直接在那里导航。如果有多个结果,它们将列在下拉列表中,您可以在其中执行以下操作之一:
-
点击所需的项目在编辑器中打开它。
-
按Up,选择所需的项目Down,然后按Enter在编辑器中打开它。
-
开始输入来过滤结果。请注意,您可以在这里使用CamelHumps。如有必要,请按Esc一下清除筛选。
-
要在"查找结果"窗口中查看和分析匹配项目的列表,请单击在查找结果中显示,按或在数字小键盘上。Shift+Enter+
NavigateToFunctionExits导航到功能退出
ReSharper|导航|导航到|功能退出(S)ReSharper|Navigate|NavigateTo|FunctionExit(s)
Alt+`|功能退出FunctionExit(s)
ReSharper_NavigateToFunctionExits该命令为您提供了一种导航到函数退出点的简单方法。如果您在函数的名称,属性的getter或setter,构造函数的名称和语句中调用NavigateTo,则可以找到此命令。Return throw
ReSharper对待return和throw语句以及void返回类型为函数出口的函数的结束括号。
如果只有一个退出点,ReSharper会直接在那里导航。如果有多个出口点,则每个出口点都用蓝色突出显示。
高亮部分也与右侧标记栏上的标记重复。如果不是所有的高亮显示在当前屏幕上,检查这些标记可能会有所帮助。
要在突出显示的项目之间导航,请选择ReSharper|查找|转到菜单中的下一个/上一个高光,或按Ctrl+Alt+PageDown/Ctrl+Alt+PageUp。或者,单击状态指示器(应该显示)在编辑器的右上角跳转到高亮区之间。
完成检查高光部分后,按Esc删除它们。请注意,默认情况下,当您将插入符号设置为其中一个时,ReSharper会自动突出显示所有上下文退出。
如有必要,您可以通过清除Code Inspection | Settings高亮上下文退出Highlight context exits复选框来禁用此功能ReSharper选项的设置页面。
导航到通用替换Navigate To Generic Substitutions
ReSharper|导航|导航到|通用替代ReSharper | Navigate | Navigate To | Generic Substitutions 泛型类型参数导航
Alt+`|通用替代品Generic Substitutions
ReSharper_NavigateToSubstitutions此命令可帮助您确定在解决方案中使用通用符号时,使用何种类型替换泛型类型参数。在声明或使用任何泛型类型参数或任何泛型替换时调用NavigateTo时,该命令可用。您可以从编辑器,文件结构窗口和其他工具窗口中调用此命令。
所有找到的替代都显示在"查找结果"窗口中,您可以在其中进一步分析结果。
导航至实施成员Implementing Members
ReSharper|导航|导航到|实现成员ReSharper | Navigate | Navigate To | Implementing Members
Alt+`|实施会员Implementing Members
ReSharper_NavigateToInterfaceImplementation该命令导航到当前类型中实现的所有接口成员。当您在实现它的类型的接口条目中调用NavigateTo时,它变得可用:
如果只有一个实施成员,ReSharper直接在那里导航。如果有多个实施成员,则每个成员都用蓝色突出显示。
高亮部分也与右侧标记栏上的标记重复。如果不是所有的高亮显示在当前屏幕上,检查这些标记可能会有所帮助。
要在突出显示的项目之间导航,请选择ReSharper|查找|转到菜单中的下一个/上一个高光,或按Ctrl+Alt+PageDown/Ctrl+Alt+PageUp。或者,单击状态指示器(应该显示)在编辑器的右上角跳转到高亮区之间。
完成检查高光部分后,按Esc删除它们。导航到会员超载Implementing Members
ReSharper|导航|导航到|实现成员ReSharper | Navigate | Navigate To | Implementing Members
Alt+`|实施会员| Implementing Members
ReSharper_NavigateToOverloads该命令导航到当前类型中实现的所有接口成员。当您在实现它的类型的接口条目中调用NavigateTo时,它变得可用:
如果只有一个实施成员,ReSharper直接在那里导航。如果有多个实施成员,则每个成员都用蓝色突出显示。
高亮部分也与右侧标记栏上的标记重复。如果不是所有的高亮显示在当前屏幕上,检查这些标记可能会有所帮助。
要在突出显示的项目之间导航,请选择ReSharper|查找|转到菜单中的下一个/上一个高光,ReSharper | Find | Go to Next/Previous Highlight或按Ctrl+Alt+PageDown/Ctrl+Alt+PageUp。或者,单击状态指示器(应该显示)在编辑器的右上角跳转到高亮区之间。
完成检查高光部分后,按Esc删除它们。导航到元数据视图Navigate To Member Overload` s
ReSharper|导航|导航到|元数据视图ReSharper | Navigate | Navigate To | Member Overloads
Alt+`|元数据视图| Member Overloads
ReSharper_NavigateToMetadataView如果您需要分析这些符号的反编译正文,请使用"导航至解编译的源"命令;如果您需要分析其原始源文件中的符号,请使用"从符号文件导航到源"。
此命令允许您导航到从库符号的元数据重建的类型和方法的签名。元数据视图在编辑器中以只读模式显示为部分重建的源文件。所有相关的ReSharper的导航和搜索命令都可以在反编译视图中找到。
当您在源代码中的库符号和反编译的源上调用NavigateTo时,该命令可用。您可以从编辑器,文件结构窗口和其他工具窗口中调用此命令。如果目标符号包含XML文档注释,则它们将包含在元数据视图中。
如果在工具|中选择了默认VisualStudio导航,则此命令不可用ReSharper选项的外部源页面。要使其可用,请选择该组中的任何其他选项。
导航到对象浏览器Navigate To Object Browser
ReSharper|导航|导航到|对象浏览器ReSharper | Navigate | Navigate To | Object Browser
Alt+`|对象浏览器 | Object Browser
ReSharper_NavigateToObjectBrowser此命令可帮助您在VisualStudio的"对象浏览器"窗口中找到库符号,在该窗口中可以获取有关符号的详细信息,例如:基本类型或成员,类型成员等。此命令在调用"导航到"源代码中的库符号和反编译的源代码。您可以从编辑器,文件结构窗口和其他工具窗口中调用此命令。
如果必要的话,可以使对象浏览器的隐式导航到编译代码,默认的导航选项(例如,当你去申报的System.String)。要了解如何操作,请参阅编译代码中的导航和搜索。
"导航到"在"对象浏览器Object Browser"窗口中可用,因此您可以轻松导航到:元数据视图,源代码,反编译的源和其他目标。
导航到重写成员Navigate To Overriding Members
ReSharper|导航|导航到|覆盖成员ReSharper | Navigate | Navigate To | Overriding Members
Alt+`|重写会员| Overriding Members此命令可导航到当前类中覆盖的基类的所有抽象和虚拟成员。
当您在类声明中的基类条目中调用NavigateTo时,该命令可用。它的工作原理类似于导航到实现成员命令。
如果只有一个覆盖成员,ReSharper会直接在那里导航。如果有多个覆盖成员,则每个成员都用蓝色突出显示。
高亮部分也与右侧标记栏上的标记重复。如果不是所有的高亮显示在当前屏幕上,检查这些标记可能会有所帮助。
要在突出显示的项目之间导航,请选择ReSharper|查找|转到菜单中的下一个/上一个高光,或按Ctrl+Alt+PageDown/Ctrl+Alt+PageUp。或者,单击状态指示器(应该显示)在编辑器的右上角跳转到高亮区之间。
完成检查高光部分后,按Esc删除它们。导航到参数声明Navigate To Parameter Declaration
ReSharper|导航|导航到|参数声明ReSharper | Navigate | Navigate To | Parameter Declaration
Alt+`|参数声明| Parameter Declaration
ReSharper_NavigateToParameter此命令从方法调用中的参数导航到此方法的匹配重载声明中的相应参数。
当您在方法调用参数上调用NavigateTo时,该命令可用。
如果您导航的项目属于当前的解决方案,ReSharper将在编辑器中打开相应的文件,并将插入符号放在符号声明中。如果在引用的库中找到它,ReSharper根据Tools|上定义的设置进行导航ReSharper选项的外部源页面 Tools | External Sources。
从符号文件导航到源Navigate To Sources from Symbol Files
ReSharper|导航|导航到|来自符号文件的来源ReSharper | Navigate | Navigate To | Sources from Symbol Files
Alt+`|来自符号文件的来源| Sources from Symbol Files
ReSharper_NavigateToPdb该命令尝试获取库符号的原始源文件并在其中显示符号。当您在源代码中的库符号和反编译的源上调用NavigateTo时,该命令可用。您可以从编辑器,文件结构窗口和其他工具窗口中调用此命令。
ReSharper可能需要一些时间从符号服务器下载所需的文件;在这种情况下,您将看到下载进度。
如果在工具|中选择了默认VisualStudio导航Default Visual Studio Navigation,则此命令不可用ReSharper选项的外部源Tools | External Sources页面。要使其可用,请选择该组中的任何其他选项。
要成功执行此命令,PDB信息应可用于目标程序集。ReSharper使用两种方法来搜索PDB:
如果PDB不可用,请使用导航至元数据视图命令来仅分析从元数据重构的符号的签名;或"导航至解编译的源"命令来分析符号的反编译主体。
-
它在本地搜索PDB,位于目标程序集所在的同一目录中。
-
如果它无法在那里找到PDB,它会使用_NT_SYMBOL_PATH环境变量在符号服务器上查找它。此外,ReSharper使用VisualStudio选项来查找符号服务器。请参阅下文,了解如何在VisualStudio选项中指定符号服务器。
有些公司使用符号服务器(源服务器)发布部分源代码。例如,Microsoft使用此技术来访问.NETFramework的源代码。如果目标PDB的符号服务器可用,则此命令可以访问以此方式存储的源。如有必要,您可以将原始源文件导航到默认导航选项,以隐式导航到编译代码(例如,当您转到System.String的声明时)。要了解如何操作,请参阅编译代码中的导航和搜索。
要让ReSharper知道可用的符号服务器,您需要在VisualStudio选项和/或_NT_SYMBOL_PATH环境变量中指定它们。ReSharper将查找符号文件并从指定的位置下载它们。
在VisualStudio选项中指定符号服务器的路径
- 选择工具|选择在主菜单。
- 在选项对话框中,展开调试节点并选择符号。
-
在符号页面上,单击文件夹图标,然后在新符号文件位置(例如http://domain/path/symbols)中键入源服务器的路径。有关更多信息,请参见如何:使用符号服务器。
符号服务器旁边的复选框是否被选中并不重要。ReSharper使用自己的算法来处理符号服务器,并且只分析VisualStudio选项中这些服务器的路径。导航到测试浏览器Test Explorer
ReSharper|导航|导航到|单元测试浏览器ReSharper | Navigate | Navigate To | Unit Test Explorer
Alt+`|单元测试浏览器
ReSharper_UnitTestExplorerOpenInExplorer该命令从文本编辑器中的单元测试或测试类导航到UnitTestExplorer窗口中的相应节点。当您在测试方法或测试类中的任何位置调用"导航至"时,该命令可用。
要详细了解ReSharper中的单元测试支持,请参阅单元测试帮助。
导航至待办事项浏览器Navigate To To-do Explorer
ReSharper|导航|导航到|待办事项浏览器
Alt+`|待办资源管理器To-do Explorer
ReSharper_TodoExplorerLocate此命令从编辑器中的待办事项导航到"待办事项浏览器"窗口中的相应条目。当您在编辑器中的任何待办事项上调用导航至时,该命令可用:
查找用法
您可以使用GotoDeclaration命令的使用感知行为来浏览符号用法。
ReSharper提供了一组功能,可帮助您研究如何在解决方案中使用解决方案中定义的符号和引用库中的符号。在本节中,您将学习如何:
-
如果找到多种用法,可以在"查找结果"窗口中研究它们,该窗口提供了许多分析用途的方法。
ReSharper还提供了转到符号使用的命令,如果您正在查找特定用途并希望在不打开查找结果窗口的情况下使用此用法,该命令可能会更方便。
寻找符号的用法
ReSharper|查找|查找用法ReSharper | Find | Find Usages
Shift+F12
ReSharper_FindUsages您可以使用GotoDeclaration命令的使用感知行为来浏览符号用法。
该命令允许查找解决方案中特定符号的所有用法。您可以从符号声明或任何其他用法开始搜索。您可以从编辑器,文件结构窗口和其他工具窗口中调用此命令。
ReSharper还提供了转到符号使用的命令,如果您正在查找特定用途并希望在不打开查找结果窗口的情况下使用此用法,该命令可能会更方便。
寻找符号的用法To find usages of a symbol
- 将插入符号放在编辑器中的符号上,或者在工具窗口中选择符号。
- 执行以下操作之一:
- 在主菜单中,选择ReSharper|查找|查找用法。 ReSharper | Find | Find Usages.
- 右键单击并在上下文菜单中选择查找用法。
- 按Shift+F12。
-
如果找到单个用法,ReSharper将直接导航到编辑器中的用法。查找结果窗口中将显示两个或更多搜索结果。
如有必要,您可以更改默认行为,以便查找结果Find Results 窗口中还显示单个找到的用法。为此,请清除环境|中的转至使用情况:如果只有一个结果.... Go to Usage: if there is only one result.复选框ReSharper选项的搜索和导航Environment | Search & Navigation页面。
寻找泛型类型的用法
当搜索泛型类型的用法时IFoo<string>,您可能实际上只想找到所有用法IFoo<>或IFoo<string>仅用于确切泛型替换的用法。
默认情况下,ReSharper允许您通过显示额外的弹出框来消除搜索结果的歧义。
您也可以配置该功能,以便始终执行特定的搜索逻辑(全部替换或完全替换)。为此,请使用Environment|上的Find泛型类型用法行为选择器ReSharper选项的搜索和导航页面。
查找相关实体的使用情况
ReSharper|查找|查找用法
Ctrl+Shift+Alt+F12
ReSharper_FindUsagesAdvanced该命令使您能够查找与特定范围内的选定符号(例如,文本出现,动态引用等)相关的实体的用法。您可以从编辑器,文件结构窗口和其他工具窗口中调用此命令。
执行高级用法搜索To perform advanced search for usages
- 将插入符号放在编辑器中的符号上,或者在工具窗口中选择符号。
- 在主菜单中,选择ReSharper|查找|查找使用高级ReSharper | Find | Find Usages Advanced或按Ctrl+Shift+Alt+F12。
- 在打开的"搜索属性"对话框中,您可以自定义搜索。
- 使用"查找"列中的复选框可指定结果中应包含哪种相关符号。根据原始符号的不同,这些选项可能会有所不同。例如,如果它是一种类型,你可以寻找成员的用法;如果它是委托人,则可以查找委托目标等。有关更多信息,请参阅搜索属性对话框。
- 在范围列中,选择搜索的范围。
- 如果原始符号是派生类中的重写成员或实现的接口成员,则ReSharper会在"搜索"字段中显示原始成员及其所有基本成员。你选择是否寻找基础成员或最重要成员的用法。
- 点击查找。
-
如果找到单个用法,ReSharper将直接导航到编辑器中的用法。查找结果窗口中将显示两个或更多搜索结果。
如有必要,您可以更改默认行为,以便查找结果窗口中还显示单个找到的用法。为此,请清除环境|中的 Go to Usage: if there is only one result.... ....复选框ReSharper选项的搜索和导航页面。
寻找外部符号的用法
ReSharper|查找|在范围外查找符号
ReSharper_FindReferencedCode要查找项目中引用的特定模块的符号用法,请使用"查找代码依赖于模块"命令。
ReSharper可以帮助您在特定范围内找到任何可以像功能一样狭窄或与项目一样大的外向参考。根据搜索范围的不同,ReSharper会向您显示在此范围之外定义的所有符号的用法。这些可能是您的解决方案中的符号或来自当前项目中引用的编译程序集的符号。
考虑下面的ExternalSymbols课程。如果您在构造函数上运行该命令,则搜索结果将是该方法的单一用法Divide,因为它是在构造函数之外定义的。如果您在该类上运行该命令,搜索结果将成为该类的用法System.ArgumentOutOfRangeException,因为其余部分是在该类中定义的。
class ExternalSymbols // Symbols external to the class: System.ArgumentOutOfRangeException
{
ExternalSymbols() // Symbols external to the constructor: MyProject.ExternalSymbols.Divide
{
var x = Divide(10,2);
}
private int Divide(int numerator, int denominator)
{
if (denominator != 0)
return numerator/denominator;
throw new ArgumentOutOfRangeException("denominator");
}
}
如果在项目上运行该命令,搜索结果将包括来自引用程序集的符号的用法以及解决方案中其他项目的符号用法(如果有)。
有两种方法可以运行搜索外部符号:如果范围是项目,项目文件夹或文件,则从解决方案资源管理器开始搜索;如果范围是类或函数,则从编辑器开始搜索。
查找在当前范围外定义的符号的用法
- 执行以下操作之一:
- 在解决方案资源管理器中选择一个项目,一个项目文件夹或一个文件。
- 在编辑器中,将插入符号设置为一个函数或类。
- 在主菜单中,选择ReSharper|查找|在范围外查找符号。ReSharper | Find | Find Symbols External to Scope.
如果您正在从解决方案资源管理器开始搜索,也可以右键单击所选项目,然后在上下文菜单中选择在范围外查找符号。
如果您要从编辑器开始搜索,也可以按Alt+`,然后在"导航到"菜单中选择单击"引用代码"。 -
突出显示文件中的用法
ReSharper|查找|突出显示文件中的用法ReSharper | Find | Highlight Usages in File
Shift+Alt+F11
ReSharper_HighlightUsages如果您正在寻找当前文档中符号的用法,突出显示所有用法并在它们之间跳转可能会更方便,而不是分析查找结果窗口中的用法。请注意,读取和写入访问用法以不同颜色突出显示。
您可以使用GotoDeclaration命令的使用感知行为来浏览符号用法。
您可以在不同的符号上调用此命令来同时突出显示几个不同符号的用法。突出显示将保留,直到您按下Esc。
您还可以突出显示名称空间符号和表达式的用法(有关详细信息,请参阅ReSharperHorizons:突出显示使用的用法?)。
突出显示当前文档中符号的用法
- 将插入符号置于编辑器中的符号声明或用法。
- 在主菜单中,选择ReSharper|查找|突出显示文件中的用法或按Shift+Alt+F11。
- ReSharper使用蓝色突出显示所有读取用途,并用红色突出显示所有使用情况。
-
亮点还会在右侧的标记栏上重复显示蓝色和红色标记。如果不是所有的高亮显示在当前屏幕上,检查这些标记可能会有所帮助。
要在突出显示的项目之间导航,请选择ReSharper|查找|转到菜单中的下一个/上一个高光,或按Ctrl+Alt+PageDown/Ctrl+Alt+PageUp。或者,单击状态指示器(应该显示)在编辑器的右上角跳转到高亮区之间。
完成检查高光部分后,按Esc删除它们。上下文导航
ReSharper提供了许多命令,可帮助您根据当前插入符号位置浏览当前上下文。
结构导航Structural Navigation
ReSharper提供了许多命令,可帮助您根据当前插入符号位置浏览当前上下文。Tab以及Shift+Tab用于快速将文本选择移动到下一个或前一个代码元素而不必使用鼠标或光标键的按键。所以你可以快速跳到下一个或上一个逻辑代码段。
在以下主题中描述了上下文导航命令:
-
编辑方法调用时,反复点击Tab会首先选择所有参数(如果您想要全部替换),然后依次选择每个参数。
-
编辑for语句时,Tab将选择初始化语句,然后选择终止条件,然后选择迭代语句。Shift+Tab将做同样的事情,但相反。
GIF
默认情况下,ReSharper的支持与结构导航Tab/Shift+Tab除非你插入符号是不是在(之前的第一个非空白字符)缩进。所以你仍然可以使用Tab/Shift+Tab缩进/缩小线条。如有必要,可在Environment|上配置这些密钥的行为编辑|ReSharper选项的编辑器行为Environment | Editor | Editor Behavior页面:您可以完全禁用此选项,也可以指定何时保留Tab/的标准行为Shift+Tab。
转到包含声明
ReSharper|导航|包含声明
Ctrl+[
ReSharper_GotoContainingDeclarationReSharper提供了一个相关的功能-选择包含声明(Ctrl+Shift+[)。
通过单一快捷键,ReSharper可以帮助您快速导航到其体内任何位置的类型或函数的声明。
导航到包含声明
- 将插入符号设置到类型或函数体内的任何位置。
- 按Ctrl+[或选择ReSharper|导航|在主菜单中包含声明。或者,您可以按Ctrl+Shift+A,在弹出窗口中开始输入命令名称,然后在那里选择它。
- ReSharper会将插入符号设置为类型或函数的声明。
-
如果类型或函数在另一个类型中声明,则可以重复第二步以导航到包含类型的声明。
转到下一个/上一个成员
ReSharper|导航|下一个/上一个成员
Alt+Down/Alt+Up
ReSharper_GotoNextMethod/ReSharper_GotoPrevMethod使用这些命令,您可以在代码文件中的成员和嵌套类型之间或标记文件中的标记之间快速导航。
导航到下一个或上一个成员
- 在编辑器中设置当前文档中的脱字符号。
- 在主菜单中,选择ReSharper|导航|下一个/上一个成员或按Alt+Down/Alt+Up。
-
脱字符将移至下一个/上一个成员/标记的声明。如果有内在类型,脱字符号也会停在每个内部类型的成员。
转到相关文件
ReSharper|导航|相关文件...
Ctrl+Alt+F7
ReSharper_GotoRelatedFiles这个命令可以带你到所有文件的内容与当前文件有某种关联。
导航到相关文件可能对Web应用程序非常有用:例如,它使您能够从Web表单跳转到其主页面,用户控件,参考图像或JavaScript和CSS文件。在ASP.NETMVC应用程序中,它简化了从视图到控制器的导航和导航。
导航到相关文件
- 将插入符号放入文件中或在解决方案资源管理器中选择文件。
- 按Ctrl+Alt+F7或选择ReSharper|导航|相关文件...在主菜单中。或者,您可以按Ctrl+Shift+A,在弹出窗口中开始输入命令名称,然后在那里选择它。
-
如果有一些相关文件,则选择文件Select File下拉列表打开。从列表中选择一个文件并单击它在编辑器中打开它。
转到文件附近
ReSharper|导航|转到文件附近
ReSharper_GotoFileNearby使用此命令可导航当前文件周围的项目结构。在打开的弹出窗口中,您可以看到当前文件所属的项目,相同目录级别的文件夹和文件,并且可以轻松地跳转到这些文件或创建新文件或文件夹。
您可以从主菜单(ReSharper|Navigate|转到附近的文件)调用此命令,但从"导航到"弹出窗口(Alt+`)中选取它可能更方便。或者,您可以为此命令()分配自定义快捷方式ReSharper_GotoFileNearby。
此命令是在解决方案资源管理器(Shift+Alt+L)中查找当前文档的好替代方法。在此命令打开的弹出窗口中,您可以看到当前文件的直接邻居以及通过解决方案层次结构浏览任何项目。
如果您选择一个代码文件,它会在编辑器中打开;选择项目文件(.csproj/.vbproj)将在解决方案资源管理器中找到相应的项目。除了导航之外,您还可以使用此命令在解决方案的任何位置从现有模板创建新文件夹和文件:
浏览断点
ReSharper|导航|断点...
Ctrl+Alt+F9
ReSharper_GotoBreakpoints您可以在"查找结果"窗口中查看,切换和启用/禁用断点。
借助ReSharper,您可以快速跳转到解决方案中的任何断点/跟踪点,并在专用工具窗口中研究所有断点,其中包含分组,搜索,预览和符号名称。
跳转到断点
- 按Ctrl+Alt+F9或选择ReSharper|导航|断点...在主菜单中。或者,您可以按Ctrl+Shift+A,在弹出窗口中开始输入命令名称,然后在那里选择它。
- 在打开的断点弹出窗口中,您将看到解决方案中定义的所有断点。
- 执行以下操作之一:
- 点击所需的断点转到编辑器中的相应行。
- 按Up,Down然后按选择所需的断点,然后按Enter转到相应的行。
-
要查找断点,请输入包含项目,类,成员或定义断点的行内容的名称。输入字段不区分大小写,并允许您输入上述空格分隔的任何部分:
-
要删除断点,按在列表中选择Up和Down,然后按Delete。
ReSharper还提供了自己的R#Breakpoints窗口,您可以使用它作为本地VisualStudio窗口的替代方法-您可以开始键入搜索断点或使用上下文菜单启用/禁用或删除断点。您可以在下面的截图中查看两者的不同之处。
要显示R#断点窗口,按上述方式打开断点弹出窗口,然后单击在断点窗口中显示,请按数字小键盘上的Shift+Enter或+。
浏览到最近的地点
ReSharper会跟踪您的操作和导航历史记录,并提供一些命令,让您可以导航到您已编辑或仅研究代码的地方。
您可以通过Delete在选择此项目时按下,从查看/编辑的文件列表中删除任何项目。
查看/编辑的文件列表将针对您打开的每个解决方案单独保存,并在关闭解决方案时保存。这意味着只要打开一个解决方案以获取之前工作会话中使用的文件列表,就可以调用此命令。
导航到最近查看的文件
ReSharper|导航|最近的文件…
Ctrl+,
ReSharper_GotoRecentFiles该命令可帮助您快速找到最近在当前解决方案中打开的文件。
导航到最近编辑的文件
ReSharper|导航|最近的编辑...
Ctrl+Shift+,
ReSharper_GotoRecentEdits此命令与"转到最近使用的文件"类似,但它允许您导航到最近在当前解决方案中修改过的符号或文件。
最近的编辑列表将针对您打开的每个解决方案单独保存,并且在关闭解决方案时不会清除。这意味着您可以在打开解决方案时立即调用此命令,以获取在之前的工作会话期间修改的项目列表。
您可以定义是使用与单个条目相同的方法显示最近的编辑,还是使用"最近编辑中的合并位置"复选框将其显示为单独的条目。ReSharper选项的搜索和导航页面。默认情况下,方法中的每个编辑都显示为单独的条目。如果启用此选项,则同一方法中的最近编辑将显示为单个条目,显示最近的编辑。最近在不同方法中进行的编辑始终显示为单独的条目。
跳回到之前的编辑
ReSharper|导航|先前的编辑
Ctrl+Shift+Backspace
ReSharper_GotoLastEditLocation该命令会将您的光标带到您的解决方案中您做出某些更改的位置。您可以多次调用此命令以回溯编辑历史记录。
浏览导航历史
ReSharper|导航|导航向后/向前
ReSharper_NavigateBackward/ReSharper_NavigateForward这些命令与VisualStudio的"向后导航"和"导航前进"命令不同。要了解关于后者的更多信息,请参阅MSDN博客。ZainNaboulsi。向后导航并向前导航
使用这些命令,您可以快速浏览ReSharper导航结果的目标。无论何时使用导航和搜索命令(当然,向后导航和向前导航除外),都会记录导航历史记录,并且可以在其中向后和向前进行导航。
在默认的键盘快捷方式中,这些命令没有快捷方式。但是,如果需要,您可以分配自定义快捷方式。这些命令的别名是ReSharper_NavigateBackward和ReSharper_NavigateForward。
在Solution/AssemblyExplorer中查找当前文档
ReSharper|工具|找到解决方案/程序集资源管理器
Shift+Alt+L
ReSharper_LocateInSolutionOrAssemblyExplorer请注意,如果在编辑器中打开的文件未包含在当前解决方案中,该命令将不起作用。
这个方便的导航功能可让您在解决方案资源管理器中展开树,自动滚动并突出显示与当前文档相对应的项目。当你有一个大规模的解决方案或有限的屏幕区域,这会迫使你将SolutionExplorer窗口缩小到极限时,它特别有用。
您还可以在使用此符号的源代码中的AssemblyExplorer中找到库符号:在插入符号时,按Alt+`或选择ReSharper|导航|在主菜单中导航至...,然后选择在程序集浏览器中查找。
该命令也适用于反编译的代码,允许您在AssemblyExplorer窗口中查找已反编译的符号。在这种情况下,该命令对插入位置敏感:如果光标位于特定符号上,则与该符号相对应的项目在组件浏览器中突出显示;如果光标位于文档的其他位置,则文档的根类型将突出显示。
在解决方案或程序集资源管理器中查找当前文档
- 在编辑器中,切换到您想要在解决方案资源管理器中找到的文档。
- 按Shift+Alt+L或选择ReSharper|工具|在主菜单的Solution/AssemblyExplorer中找到,
-
ReSharper将带来解决方案资源管理器窗口或程序集资源管理器窗口(取决于您的插入符号是在源代码还是在反编译的代码中),以便专注并向您显示该项目。
编译代码中的导航和搜索
解决方案不限于项目的源代码,它还包含对解决方案中使用的库的引用。有机会访问这些库中的符号并将它们作为您的解决方案的一部分,非常方便。ReSharper提供了一个内置的反编译器和许多功能,可以帮助您查看和浏览已编译的代码。
编译汇编中符号的代码显示取决于设置,PDB信息的可用性以及应用的导航命令。
目标库符号有两种类型的导航命令:
-
对于第二种类型的命令,您可以指定ReSharper如何表示库符号。当第一次执行这种导航时,您会看到一个对话框,提示选择默认导航操作:
您还可以在工具|上指定默认导航操作ReSharper选项的外部源页面。
ReSharper还允许您使用AssemblyExplorer窗口浏览解决方案之外的任何程序集的源代码。有关更多信息,请参阅探索和反编译程序集。
代码表示选项Code Presentation Options
-
反编译代码-此视图显示与您打开或导航到的类型相对应的反编译的C#代码。如果没有调试信息可用于该类型,或者如果使用"导航至解卷源"命令故意导航至此视图,则默认使用此视图。
-
符号文件中的代码-此视图显示C#或VB.NET中符号文件的原始源代码。ReSharper使用调试信息从本地源或符号服务器中检索符号文件。
要配置反编译代码的显示方式,请使用Tools|上的以下复选框ReSharper选项的外部源页面:
您可以同时在不同的选项卡中打开同一文档的不同视图。
-
可用时使用符号文件中的源选中此复选框以使用调试信息(PDB文件)来查找适当的源文件并使用它们来显示和导航代码。
如果选中此复选框并且源文件可通过调试信息获得,则ReSharper将显示并导航到原始源代码。
如果清除此复选框或源文件不可用,则ReSharper反编译代码。 -
允许从远程位置下载选中此复选框可启用从SymbolServer或其他远程位置下载源。如果符号文件在本地和远程都可用,ReSharper将显示本地符号文件。
您的计算机应连接到Internet以使此选项可用。如果您使用代理服务器,请检查环境|上的相应选项是否配置正确ReSharper选项的Web代理设置页面。
要查看打开的文档的摘要和演示文稿模式,请右键单击其标签页标题并在上下文菜单中选择"外部源信息"。在出现的对话框中,您可以了解文档所属程序集的名称和位置,以及外部源提供程序-元数据查看器,反编译器或符号服务器。
访问反编译的文件Accessing Decompiled Files
您可以在编辑器中看到的所有反编译的代码实际上都被反编译为临时文件。如有必要,您可以访问这些文件。
访问反编译的文件
- 要查看打开的文档的摘要和演示文稿模式,请右键单击其标签页标题并在上下文菜单中选择"外部源信息"。在出现的对话框中,您可以了解文档所属程序集的名称和位置,以及外部源提供程序-元数据查看器,反编译器或符号服务器。
- 要在其包含的文件夹中显示当前文件,请右键单击编辑器选项卡标题并选择打开包含文件夹。
- 要将完整路径复制到当前文件,请右键单击编辑器选项卡标题并选择复制完整路径。
-
要保存当前文档,请右键单击编辑器选项卡标题,选择另存为,然后指定保存文件的位置。
如果您想查看程序集的所有已反编译的文件,则可以将程序集导出到VisualStudio项目中。
探索和反编译程序集
要学习装配属性(例如版本,公司,版权),请在装配体资源管理器中双击装配体并研究打开的AssemblyInfo.cs文件。
AssemblyExplorer窗口允许打开多个程序集并保留打开的程序集和文件夹列表。您可以遍历并浏览所有打开的程序集。展开程序集节点会列出程序集内的命名空间,它可以进一步扩展为类型和类型成员以及程序集引用。您可以双击任何类型来对其进行反编译或从符号服务器获取源(取决于您的设置)。
另外,AssemblyExplorer包含表示当前类型的基类型和继承者的节点。探索程序集的最终步骤是将其导出到VisualStudio项目,以便您可以浏览源代码,构建和调试它。有关更多信息,请参阅将组件导出到项目。
您可以轻松地搜索符号在大会浏览器加载的所有组件-只需使用转到一切/类型(Ctrl+T)或转到符号(Shift+Alt+T)命令。
打开和关闭程序集
您也可以从全局程序集缓存(GAC)打开程序集并在特定文件夹中查找程序集。。
使用ReSharper,您可以打开任何.NET程序集,反编译并浏览其内容。
支持的装配文件类型包括:
-
库(.dll)
-
可执行文件(.exe)
-
Windows8元数据文件(.winmd)
-
档案(.zip)
-
NuGet包(.nupkg)
-
MicrosoftVisualStudio扩展包(.vsix)
打开装配
- 单击装配浏览器工具栏上的打开,然后选择一个装配文件。
-
在解决方案资源管理器中,右键单击引用的程序集并在上下文菜单中选择在组件资源管理器中查看。
或者打开程序集文件,您可以浏览包含程序集文件的文件夹。
显示其名称和版本的打开的程序集将添加到AssemblyExplorer窗口。您可以通过展开程序集节点及其子节点来探索它。双击代码符号进行反编译并查看相应的代码。
由于ReSharper不对已打开的程序集进行任何修改,因此可以通过从AssemblyExplorer窗口中删除来关闭它们。
关闭组件
- 右键单击程序集并在上下文菜单中选择从列表中删除项目。
- 在AssemblyExplorer中选择一个装配体,然后按Delete。
-
要关闭所有组件,请单击清除组件资源管理器
在文件夹中查找程序集
由于ReSharper递归处理选定的文件夹,请确保不要添加可能包含太多程序集的文件夹(例如程序文件)。在ReSharper中加载所有程序集可能需要很长时间。
ReSharper允许在AssemblyExplorer窗口中加载整个文件夹加载文件夹时,ReSharper处理其所有子文件夹以查找可反编译的文件,并在AssemblyExplorer中显示该文件夹的层次结构。
用.NET程序集打开文件夹To open a folder with .NET assemblies
-
单击装配浏览器工具栏上的浏览文件夹,然后选择一个目标文件夹。
该文件夹被添加到AssemblyExplorer窗口。您可以通过展开子文件夹和其中找到的所有装配节点来探索它。双击代码符号进行反编译并在编辑器中查看相应的代码。
在文件夹中找到的任何程序集都可以显示在程序集资源管理器的根级别。为此,请右键单击装配节点,然后在上下文菜单中选择在根级别显示。
您也可以打开一个特定的程序集文件来替代探索文件夹。
从NuGet包打开装配
ReSharper提供了几种探索它们包含的NuGet包和程序集的方法:
从磁盘
您可以通过单击AssemblyExplorer窗口的工具栏打开任何NuGet软件包,然后选择一个或多个.nupkg文件。
来自软件包源
您可以使用任何本地或远程软件包源从NuGet软件包加载程序集。
从NuGet包源加载组件
-
点击AssemblyExplorer窗口的工具栏。这将打开NuGet打开对话框。
-
指定包源。这可以是ReSharper将查找NuGet包的磁盘路径或URL。
-
指定包过滤器。ReSharper将使用此字段仅显示名称中包含指定子字符串的包。
-
使用复选框来定义您是否想要查找最新/全部和发布/预发布软件包版本。
-
如果指定的包源代码包含与指定过滤器匹配的任何包,您将在列表中看到这些包。
-
选择所需的包,然后单击打开加载包,它包含了所有的组件装配资源管理器窗口。或者,选择"加载依赖项"以加载所有相关的程序包和程序集。
从本地包缓存中
如果您想从最近使用的任何NuGet包中浏览程序集,ReSharper将帮助您快速查找并从NuGet全局缓存文件夹(%USERPROFILE%。nugetpackages)中打开它们。
从本地NuGet包缓存中加载程序集
-
点击AssemblyExplorer窗口的工具栏。这将打开NuGetPackagesCache对话框。
-
该对话框将列出机器上所有NuGet缓存位置的软件包。使用对话框中的搜索字段查找所需的软件包。
-
选择所需的软件包(您可以Ctrl单击以选择多个软件包),然后单击确定将软件包及其所有程序集从它们加载到程序集浏览器窗口。
从当前进程中探索程序集
ReSharper提供了几种探索它们包含的NuGet包和程序集的方法:ReSharper|Windows|ProcessExplorer
ReSharper_ShowProcessExplorer使用ReSharper的ProcessExplorer窗口,您可以浏览当前进程和加载的程序集。这些过程与相应的组件一起显示,并且可以进行分类和分组。如有必要,您可以显示或隐藏本机进程。
让所有加载的程序集都可以看到,您可以轻松找到想要反编译和探索的程序集。
打开加载的程序集
- 执行以下操作之一:
- 选择ReSharper|Windows|主菜单中的ProcessExplorer。
- 在AssemblyExplorer窗口的工具栏上,单击从运行过程打开。
- 在ProcessExplorer窗口中,执行以下操作之一:
- 展开您想要浏览的流程并选择所需的组件。
- 单击"按窗口查找进程",然后将mose悬停在窗口上,该窗口的您要探索的进程:
在工具提示中,您可以看到PID和CLR版本。并且该进程在ProcessExplorer窗口中突出显示。 -
选择所需的装配体后,单击将装配体添加到装配体资源管理器。程序集出现在程序集资源管理器窗口中,可以反编译。
如果您需要调试一些.NET进程,但没有PDB,您可以从ProcessExplorer中直接生成缺少的PDB。为此,右键单击任何.NET进程并选择使用ReSharperDecompiler加载符号。生成将立即开始到在VisualStudio选项(工具|选项|调试|符号)中指定的符号缓存目录。如果没有指定目录,ReSharper会建议自动添加%LOCALAPPDATA%TempSymbolCache作为缓存目录。
从全局程序集缓存中打开程序集Opening Assemblies from Global Assembly Cache
ReSharper提供了几种探索它们包含的NuGet包和程序集的方法:全局程序集缓存(GAC)。
从全局程序集缓存打开程序集
- 在AssemblyExplorer窗口的工具栏上单击从GAC打开
-
在出现的从GAC打开对话框中,选择所需的组件。您可以通过在搜索字段中输入部件名称来批量选择部件项目并过滤部件。
使用CamelHumps-汇编名称的不同部分以大写字母开头。例如,要查找名称包含Microsoft.VisualStudio.Modeling在GAC程序集列表中的所有程序集,可以键入mvsm。
让所有加载的程序集都可以看到,您可以轻松找到想要反编译和探索的程序集。AssemblyExplorer窗口。您可以通过展开装配节点及其子节点来探索它们。双击代码符号进行反编译并查看相应的代码。
管理组件列表Managing Assembly Lists
汇编列表被保存为本地资源的链接,因此可能无法在其他计算机上正确打开。
要按照您使用多个程序集的方式应用顺序,并且还要支持在不同的程序集组之间切换,ReSharper会将程序集和文件夹组织到程序集列表中。您可以根据您的上下文使用不同的汇编列表。您可以保存并重新打开汇编列表,或者在不再需要时清除当前列表。
保存当前的汇编列表
- 在程序集浏览器工具栏上单击保存程序集列表
-
指定汇编列表文件的名称和位置。
加载保存的汇编列表
- 在程序集浏览器工具栏上单击打开程序集列表
-
选择一个汇编列表文件(*.dpl)。
在"程序集资源管理器"窗口中展开程序集时,可以在"引用"节点下看到引用程序集的列表。引用的程序集不会进一步扩展;但是,您可以通过添加到AssemblyExplorer的根级别来探索它们。
探索引用的程序集
- 展开程序集的"引用"节点,然后选择要进一步探索的程序集引用。
- 双击参考或右键单击参考并选择在根目录下显示。
-
该程序集将被添加到程序集列表中,以便您可以浏览其内容。
探索PDB内容
ReSharper通过生成可读的XML文件来帮助您探索程序集PDB内容,其中包含:
-
源文件名称,
-
IL偏移和源代码之间的映射,
-
局部变量的名称,
-
如果存在入口点方法,
-
进口范围,
-
一种PDB文件(Windows/Portable/Embedded),
-
PDB签名,
-
源服务器信息:SourceLink/SrcSrv。
如果选定的程序集没有PDB,则显示PDB内容将不可用。
要研究与装配关联的PDB内容,请在AssemblyExplorer窗口中右键单击它,然后选择"显示PDB内容"。ReSharper将生成一个XML文件并在编辑器中打开它。
探索参考层次
ReSharper还允许探索解决方案中任何项目的项目引用的层次结构。
此功能可帮助您探索任何程序集的引用层次结构,并追踪所有程序集依赖关系。检测递归依赖关系并在引用条目的右侧用字形标记。
查看程序集的参考层次结构
- 在AssemblyExplorer窗口中选择一个程序集。
- 右键单击并在上下文菜单中选择"引用层次"。
- 在出现的Hierarchy窗口的新选项卡中,您可以浏览层次结构或装配参考:
- 要在引用程序集和当前加载的引用选定程序集的程序集之间切换层次结构,请使用相应的工具栏按钮(引用项目/引用项目)
- 您可以进一步探索层次结构中的每个程序集:
- 单击基于此以根据所选装配重建层次结构。
-
探索程序集依赖关系图
ReSharper可帮助您可视化地浏览编译程序集之间的依赖关系。您可以从任意数量的装配体创建图表,并探索这些装配体如何相互引用。
创建初始图
在AssemblyExplorer窗口中选择一个或多个程序集,右键单击选择并在上下文菜单中选择ShowAssemblyDependencyDiagram。该图将包括所有选定的程序集以及从中引用的所有程序集。组件之间的引用用箭头表示。
显示和隐藏项目
有几种方法可以显示/隐藏图表中的项目:
-
要在图中显示某些装配并隐藏其他Ctrl装配 assemblies you want to select,请单击要选择的装配,然后右键单击所选内容并选择仅显示所选项目Show only selected items.。
-
要显示某些装配体的相关或引用装配体,请使用Ctrl-click选择一个或多个装配体,然后右键单击该选择并选择仅显示此/这些和从属/参考物品 Show Only This/These and Dependent/Referenced Items.。请注意,这些命令只会隐藏不相关的项目,并且不会添加任何当前隐藏的引用/依赖程序集。
-
要逐步反转图中所做的更改(显示/隐藏装配体),请单击撤消或按Ctrl+Z。要反转撤消命令,请单击重做或按Ctrl+Y。
平移和缩放图
要平移和缩放图表,请使用图表区域左上角的控件。或者,您可以使用滚动条平移图表或在图表项目外的图表区域中单击任意位置,并在显示手形光标时进行拖动。对于缩放,您还可以使用鼠标滚轮。
重新排列图中的项目
图表布局是自动计算的,但您可以根据需要进行更改:所有项目都可以移动。要移动项目,首先点击它进行选择,然后在显示十字光标时单击并拖动它。
汇编到项目
ReSharper可帮助您可视化地浏览编译程序集之间的依赖关系。您可以从任意数量的装配体创建图表,并探索这些装配体如何相互引用。
独立于汇编中使用的原始编程语言,导出的项目使用C#创建。
将程序集导出到VisualStudio项目
- 在AssemblyExplorer窗口中选择一个装配,然后单击工具栏上的ExporttoProject,或者在上下文菜单中选择ExporttoProject。
-
在出现的"导出到项目"对话框中,指定导出项目的目标文件夹。在该文件夹中,该向导将为您的项目创建一个子文件夹。
如果[DestinationFolder]/[ProjectSubfolder]不是空的,ReSharper检测到它并建议覆盖现有文件,在导出之前清理文件夹,或者选择另一个文件夹。
- 如有必要,更改项目名称。
-
如果您想要为项目创建解决方案,请勾选创建*.sln文件。
创建的解决方案文件的VisualStudio兼容性取决于程序集中使用的.NETFramework版本。例如,如果程序集使用.NETFramework4.5,则会创建VisualStudio2012解决方案。
- 勾选创建*.pdb文件以创建该项目的调试信息文件。
- 如果要将反编译的项目添加到"组件资源管理器"窗口并研究项目结构,文件等,请勾选将项目添加到组件资源管理器。
- 蜱在VisualStudio中打开项目,如果你要打开的项目的时候了。
-
点击导出完成。您可以在Project/PDBGenerationStatus窗口中查看汇编程序集的进度。
生成PDB文件
在VisualStudio中调试编译代码时,您还可以使用ReShaper反编译器自动加载反编译的符号。
独立于汇编中使用的原始编程语言,导出的项目使用C#创建。
PDB文件的用法示例超出了本主题的范围。要了解更多关于PDB文件的信息,请参阅JohnRobbins的文章。
生成符号文件时,ReSharper创建与VisualStudio符号缓存相同的目录结构。因此,如果将VisualStudio符号缓存目录设置为输出文件夹,则所有生成的符号将自动可用于VisualStudio调试器。您可以在VisualStudio选项中获取或设置缓存目录:调试|符号|在此目录中缓存符号。
为装配生成PDB文件
- 在AssemblyExplorer窗口中选择所需的组件。
- 执行以下操作之一:
- 单击程序集资源管理器工具栏上的生成PDB。
- 右键单击选择并在上下文菜单中选择生成PDB。
- 在ProcessExplorer窗口中,右键单击任何.NET进程并选择使用ReSharperDecompiler加载符号。生成将立即开始到在VisualStudio选项(工具|选项|调试|符号)中指定的符号缓存目录。如果没有指定目录,ReSharper会建议自动添加%LOCALAPPDATA%TempSymbolCache作为缓存目录。
- 在打开的PDB生成对话框中,指定目标文件夹。或者,您可以在参考层次结构中选择更多的组件。如果在选项(工具|选项|调试|符号|缓存符号在此目录中)中指定了VisualStudio符号缓存,则可以使用单选按钮
-
点击生成。所选程序集的PDB和源文件将在指定的目标文件夹中创建。
您可以在Project/PDBGenerationStatus窗口中查看生成PDB的进度。导航到行动Navigating to Action
ReSharper|导航|转到操作...
Ctrl+Shift+A
ReSharper_GotoAction独立于汇编中使用的原始编程语言,导出的项目使用C#创建。动作,我们是指可用于当前插入位置或任何全局命令的可执行命令,例如打开工具窗口的命令。
查找并执行操作
- 执行以下操作之一:
- 按Ctrl+Shift+A。
- 当焦点在编辑器中时,按Alt+Enter。
- 如果按Alt+Enter,您将看到两个弹出窗口中的一个取决于您的插入位置:
-
- 如果您的脱字号位于编辑器的其他位置,则会显示操作搜索弹出窗口以及最近使用的操作列表。
-
在这两种情况下,您都可以开始键入操作的名称或尝试任何相关的单词。例如,您可以键入属性以查找与类型成员相关的操作:
-
如果所需的操作出现在列表中,您可以通过单击或使用箭头键选择它并按下来执行Enter。
从堆栈跟踪导航到例外
ReSharper|工具|浏览堆栈跟踪ReSharper | Tools | Browse Stack Trace
Ctrl+E,T
ReSharper_ExploreStackTrace要返回到以前打开的堆栈跟踪(在关闭解决方案之前它们保持可用),请选择ReSharper|Windows|在菜单中堆栈跟踪。
当您收到外部堆栈跟踪(例如,从错误报告)时,您可以在堆栈跟踪资源管理器窗口中打开它并导航到相应异常源自的代码。在堆栈跟踪中,文件,类型和方法显示为超链接。您可以单击它们以在编辑器中显示相应的项目。
导航到导致异常的代码To navigate to code that caused an exception
- 将异常堆栈跟踪复制到剪贴板。
- 默认情况下,如果从当前打开的解决方案复制包含符号的堆栈跟踪,然后将焦点切换到VisualStudio,则ReSharper会自动将其加载到堆栈跟踪资源管理器窗口并将其带入视图。如果您不喜欢这种行为,请清除工具|上的自动打开外部堆栈跟踪复选框堆栈跟踪资源管理器页面的ReSharper选项。如果禁用了自动打开功能,请使用下面所述的快捷方式或菜单命令。
- 在主菜单中,选择ReSharper|工具|浏览堆栈跟踪Tools | Stack Trace Explorer ,或按Ctrl+E,T。"堆栈跟踪资源管理器"窗口将打开,并在新选项卡中显示剪贴板中的异常堆栈跟踪。
- 在StackTraceExplorer窗口中,单击突出显示的项目以在编辑器中显示相应的代码。
-
如果您希望在堆栈跟踪中换行较长的行,请使用相应的工具栏按钮或在工具|工具栏上指定行换行的默认首选项。堆栈跟踪资源管理器页面的ReSharper选项。
结构搜索和替换Structural Search and Replace
ReSharper|查找|用模式搜索...
ReSharper_StructuralSearchSearch有时候,标准搜索方法(如搜索特定符号的用法或与某些正则表达式相匹配的文本出现)不能提供期望的结果。例如,您可能需要查找特定于项目的代码异味,或查找需要重构的代码片段。
在代码分析部分的相应主题中说明了如何使用结构模式作为自定义检查和快速修复
ReSharper允许您查找并在必要时替换与特定模式匹配的代码块。这些块可能会有很大的不同-它们可能包含不同的类型,表达式,语句等,但它们在逻辑上会相似。例如,您可以创建一个通用模式,该模式将foreach独立于迭代的内容和循环内的内容来匹配所有循环,或者可以使该模式更加详细,以便仅查找循环遍历特定类型的循环。该模式可以像您需要的那样复杂,并具有任何所需的细节级别。
您创建的所有模式都存储在您的模式目录中,并充当自定义严重性级别的自定义代码检查。这意味着所有符合特定模式的代码块都可以在编辑器中突出显示为提示,建议,警告或错误。还为模式提供了快速修复-它们可以根据模式的"替换"部分中的定义来转换匹配的代码块。
占位符处于搜索模式Placeholders in search patterns
模式通常包括:
-
一个文本部分,它只能包含目标语言中允许的标识符。使用文本部分,您可以定义完全匹配的内容。请注意,白色空格,制表符和换行符将被忽略。
-
占位符,允许匹配目标代码块的可变部分。占位符具有以下格式:$placeholder_name$-其中placeholder_name是任意标识符。
每个占位符必须定义一次,并可以在该模式中多次使用。定义占位符时,需要定义其种类和可选约束。有五种占位符:
-
参数占位符-方法调用中的一个或多个参数。如有必要,您可以指定应该匹配的参数的最小或最大数目。
-
表达式占位符-一系列运算符和操作数。您可以选择指定此表达式返回的类型。
-
标识符占位符-任何符号标识符。您还可以指定一个用于匹配符号名称的正则表达式。
-
语句占位符-以分号或语句块结尾的单行语句。如有必要,您可以指定应该匹配的最小或最大数量的语句。
-
类型占位符-值类型或引用类型。默认情况下,此类占位符将匹配任何类型,但可以明确指定特定类型。
请注意,为模式的特定部分选择正确类型的占位符非常重要。如果你的模式不符合它所要匹配的代码块,问题通常是选择错误的占位符类型。
创建搜索模式
要搜索或替换代码块,或创建自定义代码检查,您需要创建一个搜索模式。您可以使用现有的代码块作为该模式的基础,也可以从头创建一个新的代码块。
创建搜索模式
-
在编辑器中,选择一个应该与模式匹配的代码块。这一步是可选的,但它会帮助您更快地创建模式。
-
在主菜单中,选择ReSharper|查找|使用模式搜索...或右键单击选择(如果有),然后在上下文菜单中选择使用模式搜索。在与模式搜索对话框打开。
-
如果在第一步中选择了一些代码块,ReSharper会检测该块中的所有符号名称并用占位符替换它们。如有必要,您可以编辑代码,添加和删除占位符以获取所需的模式:
-
ReSharper检查模式中使用的所有占位符在对话框的右边部分都有正确的定义。如果没有定义的占位符,则用红色突出显示。
-
要添加一个新的占位符,只需键入一个$<placeholder_name>$,它的定义将自动添加。
始终检查自动添加的占位符定义的种类。有时不可能明确定义种类,因此您可能需要手动更正。 -
要更改占位符的种类或指定约束,请选择右侧的占位符定义,单击编辑,然后编辑占位符定义。
-
只要在模式主体中删除占位符用法,它的定义就会自动删除。
-
也可以手动添加和删除占位符定义。为此,请单击占位符定义列表上方的相应按钮。
-
根据您是否要匹配相似的代码块,选择或清除匹配类似结构复选框。ReSharper认为以下结构类似:
-
用大括号括起来的单行语句和单行语句。
-
二进制表达式,因为它们在模式中以相反顺序指定。
-
表达式在模式和表达式中以不同的操作数顺序指定。
-
表达式的操作数被包含在圆括号和不包含操作数的表达式中。
-
后缀和前缀增量运算符。
-
使用不同访问修饰符的方法。
-
ReSharper在模式主体中执行基本的代码分析。如果没有发现错误,您可以搜索匹配的代码块,定义如何替换匹配的块,或者只需单击保存将模式保存到模式目录。
指定替换模式Specifying a replace pattern
对于您的每个搜索模式,您可以添加替换模式,这将允许您快速替换搜索模式匹配的代码块。
指定替换模式To specify a replace pattern
-
创建一个新的搜索模式或打开以编辑模式目录中的模式。
-
在"使用模式搜索"对话框中,单击右上角的"替换"。
-
在出现在对话框下部的替换图案区域中,指定图案的替换部分。
使用模式中定义的占位符。当替换匹配的代码块时,根据占位符在替换部分中的位置复制占位符匹配的每段代码。 -
使用替换区域下面的复选框来指定是否应用格式化规则和/或用替换代码块中的短名称替换完全限定名称。
-
管理模式目录Managing the pattern catalog
当您保存创建的模式时,ReSharper会将其放入其模式目录中。要查看目录并研究现有模式,请转至代码检查|ReSharper选项的"自定义模式"页面,或者只需在"使用模式搜索"对话框中单击"模式目录"。
您可以在模式目录中执行以下操作:
-
要预览模式,请在列表中选择它。您将在页面底部看到它的正文和占位符的定义。
-
要删除图案,请在列表中选择它,然后单击页面工具栏上的删除。
-
要添加新图案,请单击工具栏上的添加图案。ReSharper将打开"使用模式搜索"对话框,您可以在其中指定模式详细信息。
-
在ReSharper的代码检测引擎中使用所有模式,以便自动检测匹配的代码块。
默认情况下,所有新模式在严重性级别选择器中都有"不显示",这意味着在特定范围内运行检查时,匹配的代码块既不会在编辑器中突出显示,也不会被检测到。如果您想在代码检查中检测与搜索模式匹配的代码,请为该模式选择适当的严重性级别。 -
要编辑现有模式,请双击它或选择它并单击窗口工具栏上的编辑。
当模式打开进行编辑时,您可以为其搜索和替换部分指定说明。搜索描述将用于显示目录中的模式以及编辑器中突出显示的匹配块的描述。替换说明显示为快速修复的名称,这是突出显示的块的建议。有关更多信息,请参阅创建自定义代码检查和快速修复。您可以为模式指定一个"抑制键"-一个标识符,您可以使用该标识符来抑制检测模式使用情况的ReSharper检查,并附带评论。用模式查找和替换代码
有三种方法可以用模式搜索和替换代码:
-
与模式匹配的代码块可以在编辑器中突出显示。如果为模式指定了替换逻辑,则可以用快速修复代替代码块。您只需指定一些严重性级别,而不是针对模式的"不显示"。在代码检查|的每个模式右侧使用相应的选择器ReSharper选项的自定义模式页面。有关更多信息,请参阅创建自定义代码检查和快速修复。
如果您以前两种方式之一运行搜索,则您的解决方案中的所有匹配代码块都将列在"查找结果"窗口中。如果结果不包括您正在查找的内容,则可以快速修改该模式并再次调用搜索过程。为此,请单击窗口工具栏上的更改搜索模式。
如果您运行替换前两种方法之一,则在"替换模式"对话框中将显示解决方案中的所有替换候选项。在此对话框中,您可以研究和分组候选人,如果要在上下文中查看候选人,请单击工具栏上的"显示预览"。您也可以双击任何候选人以在编辑器中打开包含文件。
如果所显示的候选者是您想要替换的候选对象,请单击对话框底部的替换。共享模式
您的搜索和替换模式可以保存在共享设置图层中,并可供所有团队使用。
如果您在代码检查|上创建了一个模式ReSharper选项的"自定义模式"页面中,单击"保存到",然后在模式准备就绪时选择共享设置图层。
要共享尚未共享的现有模式,请打开它进行编辑,然后在编辑高亮模式对话框中单击保存复制。然后点击保存到,然后选择一个共享设置图层。
分析搜索结果
ReSharper|Windows|查找结果
Ctrl+Alt+F12
ReSharper_ShowFindResults如果任何ReSharper的导航和搜索操作产生多个结果,这些结果可以显示在FindResults窗口中,该窗口提供了许多分析搜索结果的方法。
如有必要,您可以更改默认行为,以便查找结果窗口中还显示单个找到的用法。为此,请清除环境|中的转至使用情况:如果只有一个结果.... Go to Usage: if there is only one result....复选框ReSharper选项的搜索和导航页面。
某些操作,例如查找使用会自动在此窗口中显示结果。对于其他操作,您可以在显示搜索结果的弹出窗口时手动执行此操作-单击在查找结果中显示Show in Find Results,按Shift+Enter或+在数字小键盘上。
每个新导航或搜索操作的结果都显示在"查找结果"窗口的新选项卡中,因此您可以轻松返回到之前的搜索。
如果关闭查找结果窗口,则可以通过选择ReSharper|来重新打开查找结果窗口Windows|在主菜单中查找结ReSharper | Windows | Find Results果或按Ctrl+Alt+F12。保留搜索结果的选项卡将保留,直到关闭解决方案。查看与搜索结果相关的代码
要在编辑器中打开特定的结果,请双击它或按Enter。如果要在"预览"选项卡中打开结果,请在环境|上的"查找结果"窗口选项中选择"打开预览"选项卡ReSharper选项的搜索和导航页面。
您也可以按F8/Shift+F8在编辑器中打开下一个/上一个搜索结果。要在窗口中直接研究所选项目的源代码,请单击工具栏上的"显示预览"。如有必要,您可以在右侧底部找到预览窗格。
过滤搜索结果
要按名称过滤搜索结果,只需在窗口中输入部分名称即可。
如果搜索结果是通过"查找使用"操作获得的,则可以按照符号使用类型过滤结果或隐藏某些用法。
-
要仅显示读取或写入用法,请单击工具栏上的或。
-
要显示其他类型的用法,请单击过滤器用法并选择一种特定的用法类型。
-
要清除筛选,请单击显示所有用法。
-
要隐藏某些用法,请选择一个或多个用法或分组节点,然后按Delete或右键单击并选择忽略。所选用法将从当前结果视图中隐藏。您可以使用工具栏上的"显示忽略的用法"按钮来显示或隐藏忽略的用法,用灰色显示。当忽略用法显示时,您可以右键单击它们并选择撤消忽略以停止忽略它们。
分组搜索结果Grouping search results
默认情况下,所有结果都显示为单独的项目。有时候可以很方便地将同一行中找到的所有结果显示为单个项目。为此,请单击工具栏上同一行Merge Occurrences on the Same Line 上的合并发生次数。
搜索结果可以以各种分层顺序显示。默认顺序取决于初始搜索,但您始终可以通过使用工具栏上的 Group by 分组依据选择器来更改它。
您还可以按使用类型对搜索结果进行分组,即在不同的地方使用目标项目的确切程度-例如声明,调用,参数,方法返回等等。为此,请单击工具栏上的Toggle grouping by kind按种类切换分组。
如果要将结果显示为普通列表,请在分组依据Group by选择器中选择无。
设置断点和跟踪点Setting breakpoints and tracepoints
无论您如何在"查找结果"窗口中获得结果,如果它们设置的行出现在搜索结果中,您将看到断点和跟踪点。此外,您可以通过切换断点,使用F9/禁用断点Ctrl+F9,或从上下文菜单访问与断点和跟踪点相关的命令。
您可以使用Breakpoints弹出窗口(Ctrl+Alt+F9)快速查找并删除断点和跟踪点。
其他对搜索结果的操作Other actions with search results
如果搜索结果彼此相关(即,如果它们是特定符号的用法,从特定符号派生的符号等),则可以通过单击工具栏上的在图Show on Diagram上显示来在类型依赖关系图中显示它们。
如果任何符号或一组节点不是在当前标签的用法搜索的目标,你可以找到这个符号的用法或查找相关符号的用法权从查找结果Find Results窗口。为此,请右键单击该项目并在上下文菜单中选择相应的操作,或者按Shift+F12或Ctrl+Shift+Alt+F12。
查看文件结构Viewing File Structure
ReSharper|Windows|文件结构ReSharper | Windows | File Structure
Ctrl+Alt+F
ReSharper_ShowCodeStructure文件成员标有可在环境|上配置的符号图标ReSharper选项的一般页面。
使用ReSharper,您可以使用"文件结构"窗口查看当前文档的结构,这极大地简化了大文件中的导航。该窗口与编辑器同步。当您切换到另一个编辑器选项卡时,窗口将显示相应文件的结构。
您可以通过拖放类型和键入成员来重新排列顺序。您的更改会立即反映在文件中。
如果打开的文件包含单元测试,则会标记相应的图标,显示其最后一次执行的状态。您也可以从窗口内部运行和调试单元测试。
从文件结构File Structure窗口中,您可以从符号中导航,找到符号的用法并执行重构。要检查可用命令,请右键单击任何符号。
分析当前文档的结构To analyze the structure of the current document
- 按Ctrl+Alt+F或选择ReSharper|Windows|文件结构ReSharper | Windows | File Structure在主菜单中。或者,您可以按Ctrl+Shift+A,在弹出窗口中开始输入命令名称,然后在那里选择它。
- 使用文件结构窗口浏览并浏览文档。您可以双击任何符号以使编辑器中的插入符号切换到相应的位置。
-
如果代码的某些部分被#region块包围,则区域也会出现在文件结构中。
您可以从文件结构中将符号包装到区域中。为此,请选择要换行的成员(Ctrl-单击要进行多选的项目),然后单击工具栏上的Surround with Region带区域环绕。
您可以通过点击区域框右上角的十字图标来删除任何区域。
要重命名区域,请双击其名称或按压F2它,然后键入新名称。
ReSharper提供了更多管理区域的功能。要了解更多信息,请参阅添加和删除#区块。
- 要同步将编辑器中的插入符号位置更改为文件结构 File Structure窗口中突出显示的符号的方法,请单击工具栏上的 Track Caret in Editor编辑器中的"插入符号插入符号"。
-
要将您在" File Structure文件结构"窗口中选择的符号与编辑器中的插入位置同步,请单击工具栏上的Automatically Scroll to Source自动滚动到源。
查看中间语言(IL)
ReSharper|Windows|IL查看器
ReSharper_ShowIlViewerWindow源代码的中间语言在构建项目后可用。
如果源在构建之后被修改,则源和IL代码之间的同步可能不正确。IL代码将在您再次构建项目后立即更新。ReSharper允许您学习中间语言的源代码和反编译的符号。
使用ILViewer
当您从编译的程序集中打开符号时,您始终可以使用中间语言学习它们,而无需在编辑器中进行演示。即使该符号显示在通过PDB获取的原始源文件中,ReSharper也会为它找到相关的IL代码片段。
查看反编译符号的中间语言(IL)
-
选择ReSharper|Windows|IL查看器在主菜单中。
-
如果您处于反编译的代码中,您还可以调用NavigateTo(Alt+`)并选择IL代码。
-
默认情况下,当窗口打开时,IL视图与代码查看器中的插入符号位置同步,并且匹配代码被突出显示。要改变这种情况,请在ILViewer的工具栏上单击编辑器中的TrackCutt。
在ILViewer窗口中,将鼠标悬停在指令上时,可以在工具提示中了解IL指令的说明。这些描述取自MSDN和ECMA-335标准(分区III:CIL指令集)。
当您在代码符号或指令上设置插入符号时,此项目的所有用法都会突出显示。代码中的循环可以通过相应的缩进和注释来区分。
书签
ReSharper|Windows|IL查看器ReSharper | Navigate | Bookmarks | Bookmarks…
Ctrl+`
ReSharper_BookmarksBookmarksMenu对于您自定义的导航需求,ReSharper提供了一种用书签标记代码行并在它们之间导航的方式。
ReSharper允许您学习中间语言的源代码和反编译的符号。
-
编号书签-您可以切换此类型的每个书签,并使用专用快捷方式导航到每个Ctrl+Shift+<digit>书签:切换相应的书签;Ctrl+<digit>导航到相应的书签。您最多可以同时拥有10个带编号的书签。
-
匿名书签-这些书签只能切换并从书签弹出窗口导航。您可以拥有无限数量的这些书签。
书签显示在编辑器左侧的操作栏上。编号的书签有小数字,未编号的书签有固体填充。以下是编号为#3的书签的样子:
请注意,书签图标不会对鼠标点击产生反应。要在书签上操作,请使用相应的快捷方式或菜单命令。要添加编号书签,请按Ctrl+Shift+<digit>。如果此号码被另一个书签占用,它将被替换。
如下所述,编号和无编号书签都可以添加书签弹出窗口。添加新书签To add a new bookmark
- 将插入符号放在要标记的代码行上。
- 按Ctrl+`或选择ReSharper|导航|书签|书签... ReSharper | Navigate | Bookmarks | Bookmarks…在主菜单中。或者,您可以按Ctrl+Shift+A,在弹出窗口中开始输入命令名称,然后在那里选择它。
-
弹出的书签将显示:
在弹出窗口中,您将看到当前解决方案中设置的所有书签(如果有的话)。
- 执行以下操作之一:
- 要创建编号书签,请选择一个编号的项目并按Insert。
- 要创建无编号书签,请单击新建匿名书签项目,或选择此项目并按Insert。
-
书签被添加并且相应的图标显示在编辑器中当前行的左侧。
要转到编号书签,请按Ctrl+<digit>。要转到编号或无编号书签,可以按照下面的说明使用书签弹出窗口。
导航到书签
- 按Ctrl+`或选择ReSharper|导航|书签|书签...在主菜单中。或者,您可以按Ctrl+Shift+A,在弹出窗口中开始输入命令名称,然后在那里选择它。
- 在书签弹出窗口中,点击您想要转到的书签,或选择此书签并按Enter。
-
ReSharper将打开相应的文档并将插入符号设置在书签所在的位置。
删除书签
- 要删除解决方案中的所有书签,请选择ReSharper|导航|书签|清除主菜单中的所有书签。
- 要删除当前打开的文档中的所有书签,请选择ReSharper|导航|书签|在主菜单中清除文档中的所有书签。
- 删除编号书签,Ctrl+Shift+<digit>。
-
要删除已编号或未编号的书签,请选择在菜单中或按下Ctrl+`。在书签弹出窗口中,选择一个要删除的书签并按下Delete。
Peek定义
从VisualStudio2013开始,编辑器中提供了PeekDefinition功能。它允许您在不打开新选项卡的情况下查看引用符号的源代码。使用ReSharper,这个功能有点不同:
-
所有的导航功能都可以在peek定义视图中找到。例如,您可以调用"导航至"命令(Alt+`)。所有导航结果都显示在相同的窥视定义视图中。
-
如果您修改代码,则会重新分析该文件。
-
所有的重构都可以在peek定义视图中找到。您可以按Ctrl+Shift+R查看可用重构的列表。