为什么Rider和ReSharper启动缓慢,以及微软如何帮助解决这一问题

为什么Rider和ReSharper启动缓慢,以及微软如何帮助解决这一问题

💡 原文英文,约1500词,阅读约需6分钟。
📝

内容提要

JetBrains发现ReSharper和Rider启动缓慢,原因是微软Defender扫描进程耗时。与微软合作优化了Defender规则,并建议安装到写保护目录以提速。现发布Defender性能工具供开发者分析,同时建议更新定义和使用PowerShell模块等最佳实践。ReSharper 2026.2.1默认启用OOP模式。

🔎

延伸解读

扫描时间差异的根源

文章指出,微软Defender对写入保护目录中的进程扫描较少,而对其他进程进行完整扫描。这解释了为何JetBrains IDE启动时扫描耗时10-40秒,而微软自家IDE和CLI工具扫描时间不足1秒或约2秒。理解这一机制有助于开发者优化自己工具的启动性能。

安装位置与性能的权衡

JetBrains Toolbox默认将软件安装到%LOCALAPPDATA%\Programs,该目录无需管理员权限即可写入,便于自动更新,但无法获得写入保护目录的扫描优化。Rider安装时通过PowerShell命令添加Defender排除项,但管理员可能禁用此功能。开发者需在便利性与性能之间权衡。

自行分析Defender影响的方法

JetBrains发布了Defender性能工具,可实时监控应用扫描活动、分析离线快照并导出CSV。结合微软的PowerShell模块(New-MpPerformanceRecording和Get-MpPerformanceReport),开发者可以定位Defender对启动时间的影响。文章建议保持Defender定义更新,并考虑使用DevDrive存储仓库和缓存。

Q&A

为什么Rider和ReSharper启动缓慢?

JetBrains发现Rider和ReSharper启动缓慢的原因是微软Defender在启动时对进程进行了长时间的扫描,尤其是在ReSharper采用OOP架构后,Defender会对其进行完整扫描,导致启动时间增加数十秒。

微软Defender是如何影响开发工具启动性能的?

微软Defender在扫描进程时,如果进程位于可写目录(如%LOCALAPPDATA%\Programs),会进行更全面的扫描,导致启动时间延长。而安装在写保护目录中的进程则受到更少的扫描,启动更快。

JetBrains与微软合作解决了哪些具体问题?

JetBrains与微软合作,微软针对JetBrains Rider和ReSharper OOP进程进行了优化,并在Defender版本1.449.454.0中调整了扫描规则,使得这些工具在安装到写保护目录时能获得扫描性能提升。

如何测量微软Defender对开发工具启动的影响?

可以使用微软提供的PowerShell模块(New-MpPerformanceRecording和Get-MpPerformanceReport)来收集和分析Defender的ETW日志,或者使用JetBrains发布的Defender Performance Tool来实时监控扫描活动。

有哪些最佳实践可以优化微软Defender的扫描性能?

最佳实践包括:保持Defender定义更新、使用PowerShell模块进行性能调查、使用JetBrains的Defender Performance Tool、将软件安装到写保护目录、使用Add-MpPreference命令添加排除项,以及设置DevDrive存储仓库和缓存。

ReSharper 2026.2.1版本有什么重要更新?

ReSharper 2026.2.1版本默认启用了OOP(out-of-process)模式,这是基于性能调查结果所做的改进,旨在提升Visual Studio的响应速度。

JetBrains Toolbox安装的Rider为什么没有获得扫描性能提升?

因为JetBrains Toolbox默认将软件安装在%LOCALAPPDATA%\Programs目录,该目录不是写保护的,因此Defender会进行更全面的扫描,导致性能提升不明显。JetBrains正在评估如何为Toolbox安装的Rider配置Defender排除项。

🏷️

标签

➡️

继续阅读