加速 ReSharper(和 Visual Studio)
在 Visual Studio 中安装 ReSharper 后,性能问题主要有两个来源:
您的系统不符合 要求。 在这种情况下,我们建议将升级系统作为解决问题的第一步。
我们始终确保 ReSharper 在现代硬件上以及中型和大型解决方案中无需任何调整即可正常工作。 我们相信 Visual Studio 的开发者也在朝着同样的目标努力。
通过在过时的硬件上禁用某些功能来加速 ReSharper,您实际上剥夺了自己使用可以提高开发性能的优秀工具的机会。
Visual Studio 和 ReSharper 共享同一个 32 位进程,将您的系统推向极限。 通常,这种情况会在处理大型解决方案时发生,尤其是当 ReSharper 安装在 Visual Studio v. 2015 或更高版本时。
在这种情况下,如果您的系统符合要求,下面的检查清单将在大多数情况下帮助您解决性能问题。
首次打开大型解决方案时,花费较长时间(最多几分钟)并不是问题的标志。 ReSharper 会构建并缓存解决方案的模型,然后几乎在其所有功能中使用该模型——不仅用于 代码分析 ,还用于 导航和搜索、 代码补全、 单元测试等。
随后打开该解决方案时不会出现任何显著的延迟,因为索引结果已缓存到您的硬盘中。
请注意,由于 ReSharper 在首次启动时会处理程序集注解,因此即使您 清理 ReSharper 缓存 ,后续启动也会更快。
首先尝试此方法
以下操作可以消除性能问题的最常见原因:
转到 检查并快速修复影响性能的 ReSharper 和 Visual Studio 首选项。
如果您不使用 解决方案范围分析 ,请禁用它或考虑在解决方案范围分析中禁用警告。 即使它被禁用,您仍然可以随时通过运行 整个解决方案的代码检查 来找到解决方案中的所有代码问题。 要配置解决方案范围分析,请转到 。
在 Visual Studio 选项中,转到 :为源代码管理插件选择 无。 这将关闭 Git 或其他 VCS 提供程序并提高整体性能。
硬件检查清单
确保没有硬件中断和 DPC(通常由不良驱动程序和/或虚拟化引起)。
确保您的硬盘未被碎片化。
确保页面文件至少为 1GB。
确保您有至少 15% 的磁盘空间可用(MFT 碎片化/空间不足风险)。
确保您有至少 4GB 的可用 RAM。
将解决方案和 ReSharper 缓存 存储在 SSD 上会有所帮助,而 RAMDisk 则不会有太大影响。
推荐的系统软件调整
使用 Microsoft 当前支持的 Windows 版本
保持 Windows 更新
使用 64 位操作系统
将 devenv.exe 、 msbuild.exe 、您的项目/解决方案文件夹以及 ReSharper 缓存文件夹(默认情况下为 %LOCALAPPDATA%\JetBrains\Transient 和 可配置 )添加到 Windows Defender(及其他防病毒软件)的忽略列表中。
停止不必要的服务和进程
将您的项目/解决方案文件夹和 ReSharper 缓存文件夹从 Windows 索引中排除
Visual Studio
在开始调整 Visual Studio 设置之前,请检查是否已安装最新的 Visual Studio 更新/服务包/修补程序。
配置 Visual Studio 首选项
打开 Visual Studio 选项( ),并按以下方式配置首选项:
:禁用 根据客户端性能自动调整视觉体验 ,禁用 启用丰富的客户端视觉体验 ,启用 如果可用,使用硬件图形加速。 这些调整将减少 UI 延迟并提高整体性能。
:为源代码管理插件选择 无。 这将关闭 Git 或其他 VCS 提供程序并提高整体性能。
:选择在启动时显示空环境并禁用下载内容。 关闭起始页和新闻频道可能会节省一些启动时间。
:禁用 保存自动恢复信息。 虽然在发生崩溃时不断复制已打开文档的当前状态可能会有用,但在大型解决方案中,这可能会导致 UI 卡顿(例如,请参阅 此处 的评论)。 因此,我们建议禁用此功能,并养成在进行重要更改后保存文件的习惯。
:禁用 跟踪更改。 启用“跟踪更改”时,Visual Studio 会为已编辑的行添加边距高亮显示。 如果当前文件中有太多编辑,编辑器可能会变慢,因为这些高亮显示通常需要重新计算。
虽然这是一个有用的功能,但我们建议禁用它,尤其是在处理大型文件时。:禁用 在垂直滚动条上显示注释。 ReSharper 广泛使用 右侧边距或垂直滚动条来显示 设计时检查通知、 结构化搜索和替换结果、 待办事项 项目 ,以及 文件中的符号用法。 Visual Studio 也会在滚动条上显示许多通知,有时 Visual Studio 和 ReSharper 会报告相同的错误,导致重复显示,滚动条经常变得杂乱。
如果您更喜欢 ReSharper 的标记,您可以完全或部分禁用 Visual Studio 的注释,通过不渲染它们来获得一些性能提升。
或者,您可以禁用 ReSharper 在滚动条上的标记——转到 ReSharper | 选项 | 编辑器 | 编辑器外观 并选择 不显示标记条。:禁用 CodeLens。 CodeLens 是几个 大型解决方案的性能考量 之一,因为 “IDE 基本上会对每个方法执行一次查找所有引用操作,当它滚动到屏幕上时”。 因此,如果您注意到任何延迟,我们建议禁用它。
CodeLens 的某些功能由 ReSharper 提供——例如,您始终可以快速获取所有引用或 符号的用法 Alt+F7。:禁用 脚本 的 Just-In-Time 调试。 这将加快构建和调试速度。
:禁用 Web Forms Designer。 这将减少 UI 和编辑器的延迟。
:禁用 XAML Designer。 Visual XAML 设计器在 Visual Studio 2019 中 已知是一项资源密集型功能。 因此,如果您 使用 XAML 代码而不需要 XAML 窗体的可视化表示,建议禁用 XAML 设计器。
:禁用所有自动格式化首选项。 如果您使用 ReSharper 的 格式化辅助功能 ,这将防止您的代码被重新格式化两次并减少编辑器延迟。
:如果您使用 文件结构 窗口,那么您可能不会使用编辑器顶部的导航栏,您可以在此选项页面中安全地禁用它。
:如果您正在处理 C/C++ 代码,请将 首选项设置为
True。 这将改善 在大型文件中的输入体验。:如果您使用 ReSharper 的单元测试功能 ,您可以禁用 实时发现测试...。
配置 Roslyn
当您的 Visual Studio 解决方案变得很大时,两个代码分析引擎(ReSharper 和 Roslyn)同时工作可能会达到它们共享的 32 位进程的内存限制。
以下文章描述了一些优化 Roslyn 分析器性能和内存使用的方法: Roslyn。 大型解决方案的性能考量, 关于 .csproj、大型解决方案和内存使用的故事
其他 Visual Studio 调整
卸载 Visual Studio 中未使用的包和扩展。
值得一提的是,有一些 Visual Studio 扩展(包括默认启用的扩展)提供了与 ReSharper 类似的功能。
如果您没有在处理某些项目,您可以从 Visual Studio 中卸载它们,并在需要时重新加载。 在解决方案资源管理器中右键单击项目或解决方案文件夹,然后选择 卸载项目 或 卸载解决方案文件夹中的项目——这将提高整体性能。
ReSharper
在开始调整 ReSharper 之前,请检查您是否正在运行 最新版本 ,如果不是,请考虑更新。
配置 ReSharper 首选项
ReSharper 提供了许多不同的功能,如果有必要,您可以在 ReSharper 选项中禁用大部分功能。 因此,这里的通用规则是:如果您遇到任何性能问题,请禁用您不使用的功能。
打开 ReSharper 选项( Alt+R O ),并按以下方式配置首选项:
:在此选项页面中,您可以配置与 Visual Studio 2015 及更高版本类似功能的集成——确保选择了 隐藏 Visual Studio 灯泡 并清除了 将 Visual Studio 灯泡操作合并到 ReSharper 操作指示器中。 ReSharper 可以将 Visual Studio 的 Light Bulb 操作集成到其自己的 操作列表 中。 这在性能方面代价高昂,因为 ReSharper 必须从 Roslyn 请求可用操作,这可能会导致 CPU 和内存使用量增加。
尽管所有对 Roslyn 的请求都是在后台线程中完成的,但如果有任何明显的性能问题,您可能希望选择退出 Visual Studio 操作集成。:在此选项页面中,您可以禁用 代码检查 的各个方面。 以下是您可以禁用的内容,从最少禁用的功能开始:
如果您不使用 解决方案范围分析 ,请禁用它或考虑在解决方案范围分析中禁用警告。 即使它被禁用,您仍然可以随时通过运行 整个解决方案的代码检查 来找到解决方案中的所有代码问题。
最终步骤是清除 启用代码分析 复选框。 这将禁用 设计时检查 ,但您仍然可以在需要时 运行所需范围的代码检查。
:在此页面中,您可以选择应从代码分析中排除的内容。
在 要跳过的元素 部分中,您可以指定应被 代码检查 忽略的文件和文件夹。 请注意,您还可以通过按 Control+Alt+Shift+D8 将当前文件添加到忽略列表。 再次按下快捷键将重新启用对此文件的检查。 如果您想为此操作绑定不同的快捷键,请在 Visual Studio 选项中查找
启用 ReSharper 后台守护进程命令。如果您有一些包含第三方代码或冻结代码的 项目 ,这些代码不会被更改,您可以在 要忽略的项目 部分中 将这些项目从索引中排除。
:在此处,您可以禁用您不使用的 ReSharper 功能。 例如,清除 单元测试 复选框将禁用所有 ReSharper 单元测试功能 并节省一些内存。
:在 将解决方案缓存存储在: 选择器中,选择“系统 TEMP”或任何自定义文件夹。 如果您的解决方案未在 VCS 下,您还可以选择“解决方案文件夹”。 建议选择一个自定义文件夹。 “用户本地设置文件夹” %LOCALAPPDATA% 的问题在于,当 ReSharper 写入此文件夹时(这种情况经常发生),Visual Studio 的目录监视器可能会被触发。
:如果您在输入时遇到速度变慢的问题,您可能需要配置此项。 与代码检查类似,您可以禁用 ReSharper IntelliSense 的特定部分,或者完全关闭它并回退到 Visual Studio 的原生 IntelliSense。 以下是您可以禁用的内容,从最少禁用的功能开始:
:清除 显示成员签名、 显示符号类型、 显示摘要。 这将简化构建补全列表。
:关闭特定语言的 ReSharper IntelliSense(自定义 IntelliSense )或完全关闭它(Visual Studio)。
:禁用 输入分号时自动格式化 和 输入右大括号时自动格式化 以避免在输入时 代码重新格式化 ;还可以禁用 更正通用语言特定的拼写错误 ,这将关闭 一些输入辅助功能。 清除这些复选框将加快输入速度。
如果您使用 C++,您还可以禁用 在基本补全中显示导入条目 首选项——这将简化补全列表,从而减少输入时可能的延迟。
:禁用 高亮当前行、 高亮匹配的分隔符。 这可能会减少 UI 和编辑器延迟的可能性。
:禁用您不使用的 ReSharper 扩展。
:如果您不使用 嵌入提示 ,请清除 启用内嵌提示 复选框以禁用整个内嵌提示子系统。
:启用 使用 ReSharper 构建。 ReSharper 的 增量构建 可以显著减少构建时间,尤其是对于大型解决方案。
:在此处,您可以禁用对您无用的 上下文操作。
:如果您使用 JavaScript 并遇到一些性能问题,请不要启用 检查代码时分析属性上下文 选项。
:在此处,您可以添加 C++、JavaScript、TypeScript、CSS、HTML 和 JSON 文件、文件夹和通配符,以将其视为“跳过”或“库”。 ReSharper 将完全忽略“跳过”的文件,并将“库”文件视为只读——用于 导航的索引,但不进行 检查、 快速修复和 重构。
:在此页面中,您可以禁用对您无兴趣的 自动语言注入。
不要过度使用复杂的 UI 控件
其他调整
如果没有任何帮助
如果您已经尝试了上述所有方法,但性能仍然较差,您可以暂时禁用 ReSharper 并检查它是否是导致性能下降的原因。 要禁用/启用 ReSharper,请转到 并单击 立即挂起/立即恢复。
如果暂停 ReSharper 有助于提高性能,但您仍希望偶尔使用它进行 代码分析、 代码清理 或 代码重新格式化 ,您可能希望设置一个快捷键来快速切换 ReSharper 的启用和禁用。 操作方法如下:转到 ,找到 切换 ReSharper 挂起状态 命令,然后按下您选择的快捷键并单击 分配。

已知性能问题
过时的缓存
如果您最近更新了 ReSharper,并且注意到以前版本打开的解决方案性能下降,您可以尝试通过清除 ReSharper 缓存并删除解决方案 .suo 文件来加速。
要清除缓存,请转到 并单击 清除缓存。
已构建的 JavaScript 文件
如果您的解决方案中有一些已构建的 JavaScript 文件(例如 jquery.js ),请通过在 ReSharper 选项 的 页面上的 库代码 部分中列出这些文件,将它们从分析中排除: Alt+R, O 。
已知兼容性问题
其他 Visual Studio 扩展
以下产品已观察到存在重大兼容性问题:
DevExpress CodeRush/Refactor Pro(不兼容)
Telerik JustCode(不兼容)
Whole Tomato Visual Assist
Productivity Power Tools
以下产品已观察到性能下降:
某些版本的 StyleCop ReSharper 插件
PowerCommands for Visual Studio
还有报告称,在编辑 .cshtml 文件时,Web Essentials 会导致性能下降。 如果您受到此问题的影响,请考虑转到 并将 在回车时自动格式化 HTML 设置为 False。
适用于 Mac 的 Parallels Desktop
如果您在 Mac 上使用 Parallels Desktop 在 Windows 虚拟机中运行 Visual Studio, ReSharper IntelliSense 列表 的渲染可能会非常慢。
如果在您的设置中发生这种情况,请考虑从 Coherence 模式切换到全屏模式。 有关在两种模式之间切换的指南,请参阅此 Parallels 知识库条目。
