内容提要
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排除项。