项目级功能

ReSharper提供了一组功能,这组功能在应用于项目或整个解决方案时十分有用,与单独的编码帮助程序不同。

这些功能包括ReSharper Build(可以优化MSBuild编译您的项目的方式);关系图(显示项目或类型之间的依赖关系,并作为查找实现这些依赖关系的特定代码的一种方式);重构(用于优化您的解决方案项目中的引用),以及许多其他功能。

ReSharper Build

ReSharper Build

ReSharper Build是一款进程外增量构建工具,可以充分利用多个进程并可视化不同的项目构建状态,已针对包含许多依赖关系的大型解决方案进行优化。

ReSharper Build使用一个系统替代了Visual Studio生成管理,这个系统可以将启发仅应用到需要更新的生成项目。 请注意,它不会替代MSBuild,您的项目仍然以正常方式生成。

管理运行配置

运行配置

借助Run configurations,ReSharper提供了在Visual Studio中执行代码的新方式。 共有三种运行配置:

  • Project - 借助这种配置类型,您可以在解决方案中运行或调试任何可执行项目。 对于具有多个可执行项目的大型解决方案,此选项十分有用。
  • Static method - 借助此配置类型,您可以运行或调试没有参数的任何公共静态方法。 需要调试单独调试麻烦的算法? 只需创建一个静态方法,并设置运行配置。
  • Executable - 使用这种配置类型,您可以运行或调试任何可执行文件。 如果您选择调试命令,ReSharper将运行可执行对象并让Visual Studio连接到其进程。 此配置类型一个比较好的用例是为其他程序开发插件,在这种情况下,您需要创建一个复杂的执行设置。

您也可以在不创建永久运行配置的情况下执行静态方法:只需按Alt+Enter,并使用操作列表中的Debug子菜单。

要运行或调试有效配置(默认状态下时Visual Studio启动项目),请按Ctrl+F5F5。 要管理运行配置,请按Ctrl+Shift+Alt+R,或者在菜单中选择ReSharper | Tools | Run Configurations

项目依赖关系查看器

项目依赖关系图

借助ReSharper,您可以使用解决方案体系结构的可视化表示探索解决方案中的项目依赖关系。 您可以随时打开体系结构视图(ReSharper | Architecture | Show Project Dependency Diagram),并探索项目依赖关系,无需编译任何内容。

在此视图中,您可以执行重构(例如 Adjust NamespacesRemove Unused References)、导航操作和其他有用的命令。 此外,您还可以保存依赖关系快照,然后将它与不断演变的解决方案的当前状态进行比较。

类型依赖关系图

类型依赖关系图

ReSharper让您能够以可视化方式研究类型如何在您的解决方案中彼此依赖。 在类型依赖关系图中,您可以从不同的项目或编译的程序集添加任意数量的类型,并在它们之间可视化不同的依赖关系。 除了ReSharper | Architecture | Show Type Dependency Diagram这个主菜单命令外,还有多种向关系图添加类型的方式:您可以从Find ResultsHierarchy窗口、显示导航结果的弹出窗口、项目依赖关系图添加所有类型,以及从其他工具窗口添加拖放类型,等等。

与项目依赖关系图类似,类型依赖关系图也提供了许多导航操作,例如 Move to Folder 重构,这种重构可与这里的拖放搭配使用。

程序集依赖关系图

程序集依赖关系图

ReSharper还可以让您探索编译的程序集之间的依赖关系。 您可以从任意数量的程序集创建关系图,并探索这些程序集如何彼此引用。

您可以在Assembly Explorer中于选定程序集上调用关系图,并借助引用探索程序集之间已建立的连接。

ReSharper中的NuGet Browser窗口

NuGet browser(NuGet浏览器)

借助ReSharper,您可以在NuGet软件包库中搜索类型或命名空间,并安装与您的搜索匹配的软件包 - 所有操作均无需离开Visual Studio。 您可以在NuGet Browser窗口(ReSharper | Windows | NuGet Browser)中执行所有操作。

您甚至还可以直接从编辑器中开始搜索:在任何未解析的类型或命名空间上按Alt+Enter,然后选择Find on nuget.org,找到并安装缺失的NuGet软件包。

Adjust Namespaces重构

Adjust Namespaces

某些代码重构功能可以在项目、解决方案文件夹或整个解决方案的范围内应用。

例如,Adjust Namespaces重构可以帮助您将命名空间同步到任何范围中的文件夹结构,范围最大可以是您的整个解决方案。 也就是说,如果在某个代码文件中命名空间与该文件在项目结构中的位置不对应,将对命名空间进行重命名,以便符合文件位置。 引用修改的命名空间的所有using指令都将相应地更新。

移除未使用的引用

移除未使用的引用

另一种项目级重构Remove Unused References可以帮助您检测项目中的冗余引用并将其移除,对您的解决方案进行清理。

还有一种方式可以在运行时将引用标记为已使用,如果您使用依赖关系注入框架,则这种方式非常有用。

通过标记显式加载的所有引用,您可以安全地运行ReSharper的Optimize ReferencesRemove Unused References命令,而不会破坏运行时需要的引用。

借助ReSharper查找引用的代码

查找引用的/依赖性代码

借助Find Dependent Code,您可以找依赖于选定项目的代码。 Find Referenced Code则截然相反,借助此功能,您可以查找特定范围(可以小至一个方法,也可以大到一个项目)内遇到的任何外向引用。

两种功能的搜索结构都显示在 Find Results 窗口中,如果找到一个用法,脱字符号将移动到相应的位置。

要查找依赖性或引用的代码,请在Solution Explorer中选择一个节点,或者将脱字符号放置在文本编辑器中的容器处,然后选择ReSharper | Find | Find Code Dependent on ModuleReSharper | Find | Find Symbols External to Scope

Assembly Explorer

Assembly Explorer

这个简单的窗口可以帮助您打开编译的程序集,并使用导航和搜索命令遍历和探索它们,就像您对源代码执行此类操作一样。 展开程序集节点可以列出程序集中的命名空间,您可以展开到类型和类型成员以及程序集引用。

如果您想查看某个程序集,Assembly Explorer可以帮助您将其导入到Visual Studio项目中,以便您可以浏览源代码、生成、运行并进行调试。

在Solution Explorer中全部折叠

对于在Solution Explorer中管理节点的状态,ReSharper可为Visual Studio提供帮助。 当您在Solution Explorer中折叠项目或另一个高级节点时,普通Visual Studio不会折叠它的包含节点。 因此,当您在之后的某个时间展开项目时,您会发现它会显示一个零星展开的结构。

借助ReSharper,您只需右键点击Solution Explorer节点,并在上下文菜单中选择Collapse All - 选定节点及其所有子节点都会折叠。

Collapse All 可以完美搭配 ReSharper 的另一个简洁的小功能 - Locate in Solution Explorer。 例如,您可以折叠一个项目,然后继续使用Locate in Solution Explorer展开您确实需要的节点。

在Solution Explorer中定位

借助这个方便的导航功能(可以通过Shift+Alt+L调用),您可以在Solution Explorer中为文本编辑器中当前打开的任何文件高亮显示相应的代码。 ReSharper将高亮显示代码并自动滚动Solution Explorer,让您可以实际看到高亮显示的代码。

如果您有一个包含数万个文件的大型解决方案,或者屏幕区域有限,让您不得不尽可能缩小Solution Explorer窗口,此功能将非常有用。 另外,此功能还可与Collapse All in Solution Explorer很好地搭配使用。

将ReSharper设置保存到各个设置层

ReSharper设置的分布式存储

ReSharper设置使用分布式存储模型保存,这就意味着任何设置或设置组都可以单独保存,ReSharper将在运行时组合并应用所有设置。

这种模型的好处包括为不同的解决方案使用不同的设置,轻松共享设置以及导入和导出设置,等等。 对于共享应在团队内保持相同的以下设置,此模型特别有用:代码样式设置代码模板结构化搜索与替换模式

默认情况下,有三个设置层:针对本地计算机中的所有解决方案、针对当前解决方案以及针对共享的解决方案设置。 您可以轻松地为公司级全局设置创建,管理和共享新层。

快捷键注释

本页面提供的所有键盘快捷键都在 ReSharper 的默认“Visual Studio”按键映射中。 有关 ReSharper 两种按键映射的详细信息,请参阅 ReSharper 文档