Rider 最新变化

Rider 2022.3 提供了对 .NET 7 SDK 的支持,包括 C# 11 的最新功能。 此版本具有显著的性能改进,特别关注启动时间和通过远程开发在 WSL 2(适用于 Linux 2 的 Windows 子系统)上运行 Rider 的功能。 我们还引入了多个显著的 UX/UI 更改,例如多显示器设置的工具窗口停靠。 最后,此版本还加深了与 Unity 和 Unreal 编辑器的集成。

性能

性能

我们做出多项更改,提高了 Rider 的启动速度并减少了打开解决方案和开始工作所需的时间。

  • Rider 安装程序现在能够将可执行文件添加到 Windows Defender 排除列表中,从而显著提高启动速度。
  • Rider 现在可以立即加载解决方案文件并构建其项目树,无需等待后端初始化。
  • 我们从解决方案资源管理器移除了所有加载条,以实现更简洁的 UI。 从现在开始,这些加载进度条都将在 IDE 状态栏中呈现。
  • 我们引入了一个新的 C# 解析器,它在启动期间提供基础语法高亮显示,并在 Rider 启动和解决方案完全加载后提供完整体验。
  • 我们还对 Rider 的后端性能进行了多项改进。 We’ve enabled server garbage collection (GC) to get better memory throughput for the backend process. 此外,我们已将 Rider 后端语言服务的运行时从 .NET 6 更新到最新的 .NET 7 版本。 最后,当项目没有相互依赖关系时,我们现在可以并行运行设计时构建。 这些更改使包含许多项目的解决方案的加载速度大大加快。

在此处详细了解 Rider 的性能改进。

WSL 2 支持

Rider 现在通过 IDE 的远程开发功能支持 WSL 2(适用于 Linux 2 的 Windows 子系统)。 这意味着您可以在 WSL 2 实例上使用 Rider 浏览解决方案和源代码,以及构建、调试和运行应用,就像它们存储在本地一样。

可以从 Rider 的欢迎屏幕启动一个简单的设置过程。 UI 将通过远程开发功能提供,这意味着无需 WSLg,本地 RemoteDev 客户端将自动安装。 有关详情,请参阅远程开发文档

UI/UX

停靠工具窗口

备受期待的将工具窗口停靠到浮动编辑器标签页的选项终于推出了! 为了让您可以更轻松地安排工作空间并在多个显示器上与 Rider 交互,我们实现了将工具窗口拖出主窗口并将其停靠到浮动编辑器标签页的选项。

更新了 Search Everywhere(随处搜索)

我们微调了 Search Everywhere(随处搜索)结果列表背后的算法,使其行为更可预测,使其能够更准确地选择您正在搜索的元素。 现在,开始输入查询时,IDE 会冻结出现的第一个搜索结果,并且不会在找到更多选项时对其重新排序(早期版本的情况)。

新的 Attach to process(附加到进程)对话框

我们引入了新的 Attach to process(附加到进程)对话框以改进用户体验,尤其是通过 SSH 附加到进程的情况。 我们的目标是帮助您更快找到和选择正确进程,并让 IDE 记住选择的调试器。

重做了粘贴操作

重做了粘贴操作

我们重做了粘贴操作 (⌘V / Ctrl+V) 的行为,改进了编辑体验。 现在,如果在没有选择代码的情况下复制 (⌘C / Ctrl+C) 或剪切 (⌘X / Ctrl+X) 一行,粘贴操作会将剪贴板的内容添加到当前行上方,而不是像旧版本一样添加到文本光标处。

将 JSON 粘贴为类

将 JSON 粘贴为类

新增的 Edit | Paste Special: JSON as Classes(编辑 | 特殊粘贴:将 JSON 作为类)操作可以“智能粘贴”对象。 例如,使用此操作复制粘贴 JSON 时,它将根据该 JSON 自动生成 C# 类。

新 UI 抢先预览

我们邀请您在 Preferences/Settings | Appearance & Behavior | New UI Preview(偏好设置/设置 | 外观与行为 | 新 UI 预览)中切换到基于 IntelliJ 的 IDE 的新 UI。 新 UI 旨在降低 IDE 的视觉复杂性,帮助您集中注意力。

其他

我们还将继续小幅优化 Rider 的用户体验和 UI,使其更加实用:

  • 我们清理了 Add(添加)菜单,使其只显示当前解决方案或项目的相关条目。
  • Open in Terminal(在终端中打开)操作现在位于 Solution Explorer(解决方案资源管理器)上下文菜单中。
  • 顶部菜单中的 File | New(文件 | 新建)已重命名为 File | New Solution(文件 | 新建解决方案),以更好地反映将执行的实际操作。
  • 我们添加了用于在 Solution Explorer(解决方案资源管理器)中切换解决方案的操作。 右键点击正在处理的解决方案以外的解决方案将触发上下文菜单,您可以在其中选择 Open(打开)以在切换时同时关闭当前解决方案。

.NET 7 SDK 支持

NET 7 SDK 支持

Rider 2022.3 正式提供对 .NET 7 SDK 的支持,包括:

  • 更新的项目模板。
  • NuGet 中央软件包管理。
  • Endpoints(端点)工具窗口中对 ASP.NET 最小 API 路由组的支持。
  • 新的 C# 11 功能,包括 file 局部类型、UTF-8 文字、ref 字段和 scoped 关键字。
  • 创建、运行和调试以新 SDK 为目标的项目。

C# 支持

C# 11

UTF-8 文字

UTF-8 文字

我们添加了对 UTF-8 文字的基础支持。 代码分析现在会建议对文字使用 u8 后缀,而不是 System.Text.Encoding.UTF8.GetBytes() 方法或具有适当 UTF8 符号的字节数组。 还有一组针对 UTF-8 文字的编译器警告和错误。

file 局部类型

对 file 局部类型的基础支持包括对新语法的理解、类型的 file 可访问性修饰符、编译器警告和错误以及相应快速修复,例如为嵌套类指定 file 修饰符时的 Move class to outer scope(将类移动到外部范围)。 还新增了一项实用的上下文操作,可以将通用类型转换为 file 类型。

原始字符串

原始字符串

Rider 现在可以将常规字符串和逐字字符串转换为原始字符串。 这也意味着许多现有字符串功能可用于原始字符串

列表模式建议

列表模式建议

在此版本中,我们引入了使用新的 C# 11 列表模式语法(而不是使用后续索引器访问表达式进行常规集合长度检查)来检查集合中相应条目的建议。

static virtual 成员

从 C# 11 开始,您可以对接口中的 static 成员使用 abstractvirtual 修饰符,并在类型形参受此接口约束的泛型代码中使用此类成员。 更新的 Rider 可以像处理普通多态成员一样处理多态 static 成员:

  • 装订区域上的继承标记。
  • 导航到实现/super 成员。
  • 生成缺失的实现。
  • override 关键字后的代码补全建议还包括接口成员,因此现在您可以轻松实现 abstract 或 virtual static 成员。
无符号右移 (>>>) 运算符

无符号右移 (>>>) 运算符

Rider 现在可以识别 C# 开发者为了对有符号数据类型执行无符号右移而必须编写的繁琐代码模式,并建议改用 C# 11 中的无符号右移 (>>>) 运算符。

跨 span 的模式匹配

跨 span 的模式匹配

解析字符的 Span 时,您可能会经常使用 MemoryExtensions.SequenceEqual 方法。 C# 11 为这种检查引入了一种简写形式。 您现在可以使用 isswitch 表达式将字符的 Spans 与字符串文字进行模式匹配。

Rider 现在建议使用 isswitch 表达式,而不是大量的 if 语句。

ref 字段和 scoped 关键字

从 C#11 开始,您可以在 ref 结构中声明 ref 字段。 Rider 支持此新语法规则,提供所有编译器错误和警告,在代码补全中显示 ref 关键字,并允许在构造函数中初始化此类字段。

Rider 还知晓新的 scoped 关键字,您可以在 by-refref struct 实参和局部变量上使用它。 支持包括新语法的正确解析、代码补全中的 scoped 关键字,以及在生成方法重写时保留 scoped 关键字。 它还会验证 scoped 修饰符的兼容性,并为重写、接口实现和委托转换中不匹配的 scoped 形参提供快速修复。

C# 11 和 .NET 7 还为语言的 ref 安全规则引入了更改。 这些更改控制 by-refref struct 变量可用的操作,以引入 ref 字段的方式在托管代码中提供 ref 安全性。 Rider 知晓这些更改,并将帮助您找到项目中需要更新的部分,并使用新的 scoped 关键字注解,以适应迁移到 C# 11 或 .NET 7 时的变化。

语言注入

此版本具有许多语言注入改进:

我们添加了对使用 [StringSyntax](来自 .NET 7)和 [LanguageInjection](来自 JetBrains.Annotations)特性的语言注入的支持,以及对 // lang=<language_name> 语言注入指令注释的支持。

语言注入现在可以在任何语言的内插字符串和字符串串联中使用,此前仅可在 SQL 中使用。 请注意,使用字符串内插或与任意表达式的串联时,语法错误会被禁止。 C# 11 原始字符串中的语言注入也得到支持。

现在,原始字符串上会显示将缩进与实际值分隔开的缩进指南。

常规 C# 更新

全局导入装订区域标记

全局导入装订区域标记

新增的装订区域标记图标可以向用户通知 C# 和 Razor 文件中的隐式命名空间导入。

在相应行上按 Alt+Enter,即可观察到隐式导入的完整列表以及相应 global using 指令所在源文件的信息。 选择特定导入命名空间后,Rider 可以导航到它被声明的位置,包括导航到 .csproj 项目文件中的 <Using Include="Some.NameSpace" /> 标记。

全局导入装订区域标记

Rider 还提供来自 _Imports.razor 的全局导入,并允许导航到相应的导入定义。

Machine Learning-Assisted Completion for C#

针对 C# 的机器学习辅助补全

为了帮助您简化和加快开发过程,我们在 C# 中引入了用于代码补全选项的机器学习辅助元素排序。

为了增强此功能的使用体验,您可以在 Settings/Preferences | Editor | General | Code Completion | Machine Learning-assisted Completion(设置/偏好设置 | 编辑器 | 常规 | 代码补全 | 机器学习辅助补全)中启用两个选项:

  • 在补全弹出窗口中标记位置更改
  • 在补全弹出窗口中标记最相关的条目
格式字符串补全

格式字符串补全

通过在 .NET 7 中添加 Int128UInt128 数字类型,我们更新了代码补全格式说明符建议。

我们还添加了缺少的对 .NET 6 中 DateOnlyTimeOnly 日期/时间类型以及 .NET 5 中引入的 Half 半精度浮点数字类型的支持。

表达式的普通模式

表达式的普通模式

有时在重构之后,模式匹配表达式可能会变成普通的递归模式。 此时可能不值得使用递归模式语法,因此 Rider 现在提供将模式重写为更简单表达式的操作,同时保留原始模式匹配语义。

针对 void 表达式的代码补全提示

针对 void 表达式的代码补全提示

在调用后输入时,偶尔可能没有任何有意义的建议。 如果调用返回 void 的方法时调用没有产生任何值,就会发生这种情况。 这通常需要一些 IDE 操作后才能意识到(返回并导航到方法声明,或将鼠标悬停在调用上)。 在此版本中,我们针对此类返回 void 的调用引入了 void 提示条目,为您提供有关调用产生的类型的即时反馈。 如果缺少分号,接受此 void 条目将在调用后添加一个分号。

Web 开发

Blazor

Blazor

Rider 2022.3 为 Blazor Server 应用引入了热重载。 当您在 Blazor Server 应用运行时修改应用中的源代码时,Rider 会询问您是否要将此更改应用于正在运行的应用而不重新启动应用。 注意文本编辑器顶部的黄色 Sources are modified(源已修改)通知栏。 接受更改后,应用将即时更新,您可以继续使用更新后的应用。

欢迎屏幕

Internet Information Services (IIS)

为了响应社区的普遍要求,我们添加了新的 IIS Application 运行配置,用于在 IIS 服务器上运行和调试经典的 ASP.NET 应用程序。 我们还为 ASP.NET Core 应用程序引入了对来自 launchSettings.json 文件的 IIS 命令名称的支持。

端点

端点

我们将继续改进我们的 Endpoints(端点)支持和 Endpoints Viewer(端点查看器)。 查看器现在可以正确识别和收集 ASP.NET Core 7 最小 API 路由组的端点。 这意味着除了已经可用的功能之外,您还可以在使用 MapGroup() API 声明的端点上搜索、浏览和使用智能代码补全。

.NET 用户密钥

.NET 用户密钥

为 ASP.NET 项目添加了 .NET User Secrets(.NET 用户密钥)操作。

JavaScript/TypeScript Web 项目

JavaScript/TypeScript Web 项目

Rider 现在可为解决方案 (.sln) 引用的 JavaScript 和 TypeScript Web 项目 (.esproj) 自动生成 npm 运行配置。

针对 JavaScript 和 TypeScript 的 Code Vision

针对 JavaScript 和 TypeScript 的 Code Vision

Code Vision 嵌入提示现在也适用于 JavaScript 和 TypeScript。 通过这些提示,可以更轻松地跟踪代码中各种类、方法、类型别名和接口的用法。

CSS 支持

CSS 支持

IDE 现在可以理解 @supports at 规则,它将语句块与 @supports 条件相关联。 This build also includes support for viewport units, range media queries, container queries, @layer (Cascade layers), and color modification functions.

针对 Angular 的更新

针对 Angular 的更新

我们在 Angular 模板中添加了对类型缩小的支持,这将提供更精确的类型信息和更好的代码补全建议。

此外,Rider 现在会从全局搜索中排除 .angular 缓存文件夹,帮助提供更好的搜索结果。

游戏开发

Unity 支持

Rider 中的 Unity 支持将获得另一个重大更新,包括新功能、现有功能改进以及修正。

我们添加了对 Unity 新 Input System 软件包的支持。 Rider 会识别将方法用作输入的事件处理程序的情况,并且不再将它们显示为未使用。 Find Usages(查找用法)也适用于这些方法,显示它们在代码或 .inputactions 文件中的使用位置。

能够在运行时加载游戏资源会很棒,Rider 现在可以帮助确保您在 Resources.Load 方法中使用正确的路径。 它会在您输入时显示代码补全,并高亮显示任何包含警告的未知资源。

Rider 已经为多个版本提供了标记名称的补全和验证,2022.3 版本添加了对 GameObject.FindWithTag 方法组的新支持。 它会在您输入时提供代码补全,并在您尝试使用项目中不存在的标记时发出警告。

在 Unity 项目中,保持元文件与文件和文件夹同步非常重要。 如果您试图将空文件夹的元文件提交到源控制中,Rider 2022.3 会发出警告。 更实用的是,如果 Unity 编辑器已开启,出现未保存的场景或资源时,Rider 会发出警告,帮助您确保在提交时不会错过更改。

当然,还有许多较小的改进和修正。 我们减少了加载超大项目所需的时间,添加了在尝试编辑只读软件包文件时显示的通知,并改进了 Find Usages(查找用法),使其可用于嵌套预制件和事件处理程序数组中的方法。

在 DOTS 支持中,Rider 现在知道不将实现 IBakerIAspect 的类标记为未使用。

您可以为序列化字段禁用命名检查,像普通字段一样对待它们,并且在线文档的链接现在会指向正确的位置。

我们还要感谢 Unity 提供的修正,帮助调试 Nintendo Switch 上的玩家。

Unreal Engine 支持

使用 CoreRedirects 的 Rename(重命名)重构

Rider 提供了在通过 Rename(重命名)重构重命名 Unreal 类或属性时添加 CoreRedirects 的选项。 现在也适用于:

  • 重命名 UFUNCTION()
  • 重命名 USTRUCT()
  • 重命名 UENUM

执行 Rename(重命名)重构时,Rider 会在这些情况下建议添加 CoreRedirects。

如果您同意,相应的 .ini 文件会自动更新。

现在,重命名很难再让游戏崩溃了!

针对蓝图更新了 Code Vision

Rider 2022.3 引入了新的特定于蓝图的 Code Vision 指标。 您现在可以快速检查有多少蓝图使用 BlueprintCallable 函数,并从 Code Vision 上下文菜单中获取所有用法的列表。

生成 GUID

Generate GUID(生成 GUID)工具现在支持 Unreal Engine GUID 格式。 当您需要快速生成 GUID 时,只需从菜单中选择 Tools | Generate GUID...(工具 | 生成 GUID…),首选的十六进制格式将被预先选择。

自动导入

补全时自动导入功能可以为您节省大量时间。 但是,如果它添加了不正确的 #include 指令,则问题可能难以检测。 我们一直在努力完善此功能,并确保它不会在自动导入时从系统头中建议不需要的实体。 默认情况下,不会建议系统头,但如果您需要,可以在 Settings/Preferences | Languages & Frameworks | C++ | Unreal Engine(设置/偏好设置 | 语言和框架 | C++ | Unreal Engine)中启用。

UnrealBuildTool 日志

我们改进了 UnrealBuildTool 日志的表示。 为确保您不会错过有关项目配置的任何警告或错误,日志面板现在包括时间戳,并保留 UnrealBuildTool 先前运行的日志。

原生 .uproject 支持

对于基于 Unreal Engine 的项目,Rider 适用于 .sln.uproject 项目。 我们将继续增强对原生 .uproject 模型的支持,使其更准确、更易用:

  • Rider 2022.3 尊重 .project 中指定的额外源位置,特别是 AdditionalRootDirectoriesAdditionalPluginDirectories
  • 它还支持放置在游戏位置的自定义程序,并正确生成程序的所有项目文件。
  • Rider 现在支持具有多个 .Build.cs 文件的模块,用于平台特定的模块。
  • 使用 .uproject 项目模型时,.uplugin.uproject 文件中的补全和检查也已获得支持。
  • 现在,只要使用 .uproject 模型,就会自动为 C++ 程序生成运行配置。

附加到 Unreal Editor

我们为 Unreal Engine 项目实现了 Attach to Unreal Editor(附加到 Unreal Editor)操作。 它允许您快速附加到 Unreal Engine 进程,而不必手动搜索。 目前,您只能附加到与 UnrealLink 连接的同一进程,这意味着在 Unreal 编辑器中运行的项目应该与您在 Rider 中处理的项目相对应。 我们将在未来版本中改进此工作流。

ARM64 支持 抢先预览

ARM64 支持的早期预览

Rider 2022.3 现在可以在 Windows 和 Linux ARM64 上运行。 所有基础开发工作流都已得到支持,包括运行和调试 .NET 应用程序以及运行单元测试。 但是,在我们继续工作和运行测试以确保 Rider 在 ARM64 处理器上顺利运行的同时,我们希望您了解以下限制:

  • 目前,没有计划在 Windows ARM64 上支持 Unreal Engine 开发,因为 Epic Games 不支持此架构的 Unreal Engine。
  • 对适用于 Linux ARM64 的 Unreal Engine 的支持仍在开发中。
  • Windows ARM64 上的 Visual C++ 项目获得基础支持,但仍然不包括调试原生构建的应用程序。 您可以在这里了解此问题的进展。

插件

macOS 和 Linux 上的内存分析 dotUltimate

除 Windows 外,dotMemory 现在也可用于 Linux 和 macOS 上的 JetBrains Rider。 Run(运行)微件和 Run | Switch profiler configuration(运行 | 切换分析器配置)菜单提供了两种新的分析模式:Memory (sampled allocations)(内存(采样分配))和 Memory (full allocations)(内存(完全分配))。 您可以在 dotMemory 的帮助中详细了解它们之间的差异。

您可以从 Run(运行)菜单将分析器附加到正在运行的进程,实时查看 Timeline Graph(时间线图)展开。 选择时间间隔以打开 Memory Allocations(内存分配)视图,这与 dotMemory Standalone 中相同。 它可以分析特定时间范围内的分配对象和分配调用树。

不过,在这个版本中还不能收集内存快照。

Dynamic Program Analysis

Dynamic Program Analysis

Dynamic Program Analysis (DPA) 添加了新检查,可让您发现与数据库使用相关的各种问题,例如:

  • 命令执行时间长
  • 数据库连接过多
  • 同时执行的数据库命令过多
  • 命令返回的记录过多

新检查适用于所有使用 Entity Framework Core 和 SQL Server 的 .NET 数据提供程序的应用程序。

dotCover dotUltimate

Dynamic Program Analysis

更轻松的测试导航

我们已将 Show Covering Tests(显示覆盖测试)操作添加到代码编辑器和 Unit Test Coverage(单元测试覆盖)窗口中的 dotCover 上下文菜单。 此操作会显示一个弹出窗口,其中所有覆盖测试都在同一位置。 弹出窗口还允许您创建新的覆盖会话。

更快的卷影复制

现在,dotCover 仅复制 JetBrains Rider 中持续测试所需的程序集和符号文件。 这提高了 dotCover 的整体性能,特别是在大型项目中,因为它不再需要复制整个工作目录。 如有必要,您可以在 dotCover 设置中调整卷影复制文件筛选器。

改进了 Unity 支持

以前,要分析 Unity 测试的覆盖率,您必须重启 Unity 并启用覆盖率支持。 从此版本开始,不再需要重新启动 Unity,并且测试覆盖率开箱即受支持。

NuGet 支持

中央软件包管理(也称为 Directory.Packages.props 文件)是 .NET 技术栈一项不断发展的功能,随着它的改进,它应该使管理解决方案更容易向前发展。 随着 Rider 中 CPM 的加入,开发者应该可以更好地控制依赖项。

您可以在这篇博文中了解有关中央软件包管理的所有信息,包括提示和注意事项。

在解决方案中使用开源 NuGet 软件包时,项目都有暴露于安全漏洞的风险。 为了降低这种风险,我们在 Rider 中引入了漏洞依赖项检测。 IDE 将通过通知弹出窗口提醒您注意与 NuGet 软件包使用相关的漏洞依赖项,您可以在 Problems(问题)视图的 Security(安全性)部分进一步调查这些依赖项。 选择特定软件包,还可以在 NuGet Package Management(NuGet 软件包管理)窗口中找到与解决方案中所含软件包相关联的漏洞依赖项的信息。

我们还改进了 NuGet 工具窗口中 Packages(软件包)列表内的滚动体验。

F# 支持

Rider 2022.3 带来了对 F# 7 的支持,为小问题提供了各种修正,并增加了一些使用体验改进。

更出色的 XML 文档支持

更出色的 XML 文档支持

在注释中输入 < 将添加一个文档模板。 此外,语法高亮显示和代码补全使编辑文档注释更加简单。

针对记录的代码补全

针对记录的代码补全

新的代码补全规则简化了 record 表达式的输入,它会强调推断的 record 类型中的字段,隐藏已使用的字段,并修正之前不显示建议的各种情况。

签名文件

签名文件

我们添加了新的快速修复 Update parameter name(更新形参名称)和 Update record field(更新记录字段),用于更新签名文件,使它们在更改代码时更易使用。 A huge thanks goes to Florian Verdonck for implementing them!

这些只是 F# 支持改进的亮点。 You can find the full list of F# features included in the 2022.3 release here.

数据库支持

以下是 Rider 2022.3 针对使用数据库的新功能的一些亮点:

  • 快速筛选 – 使用快速搜索时,您可以筛选结果并隐藏不匹配的对象。
  • 基于模式的架构筛选 – 您现在可以根据正则表达式模式选择数据库或架构进行内省。
  • 日期/时间字段的格式 – 您可以自定义日期和时间类型的字段在数据编辑器中的显示方式。
  • Modify(修改)窗口中的多次编辑 – 您现在可以一次编辑多个对象。

了解详情:DataGrip 2022.3 最新变化

其他

IL Viewer

IL Viewer

Rider 的 IL Viewer 工具窗口现在能够将代码反编译为不同级别的 C# 语言构造。 有两个可用的 C# 级别:高级 – 使用最新语言功能简化了某些语法构造,低级 – 用于您想知道这些语法构造如何脱糖的情况。

代码高亮显示

代码高亮显示

Rider 2022.3 中的代码高亮显示和波浪线得到了大修。 由于内部逻辑差异,Rider 曾经与 Microsoft Roslyn 的代码样式分析器发生冲突,导致其显示重叠高亮显示,在不同的位置绘制相同的高亮显示,或者双重波浪线。 大多数此类情况背后的逻辑差异现已得到解决,对于极少数异常,会提示错误并就如何解决冲突提出明确建议。

此外,Rider 现在将为 Roslyn Analyzers 生成的检查在 Quick Documentation(快速文档)工具提示中显示 Roslyn Analyzer IDURL Reference(URL 引用)。

C++ 格式设置

C++ 格式设置

我们实现了直接运行 clang-format 二进制文件的选项,不再使用 Rider 的格式化程序引擎,确保与行业标准格式化程序完全兼容,提供更好的性能和更广泛的格式设置选项。 转到 Settings | Editor | Code Style | C++(设置 | 编辑器 | 代码样式 | C++)并选择 Clang-format 选项,您可以在捆绑的 clang-format 和外部 clang-format 选项之间切换。

调试器

我们通过将 Allow property evaluations and other implicit function calls(允许属性评估和其他隐式函数调用)选项禁用大幅提高了调试器性能。 它现在可以在无副作用模式下为 .NET、.NET Framework 和 .NET Core 项目计算更多表达式。

单元测试

我们让单元测试资源管理器树变得“懒惰”,使它更快并且给内存的负担更少。 以前,所有节点都与单元测试树一起自动创建,导致它在浏览时滞后并消耗过多内存。 现在,只有属于树展开部分的节点会被创建,从而显著提高性能。

MSBuild

  • 我们为 .NET Core 17+ MSBuilds 启用了默认服务器垃圾回收。
  • Rider 现在可以检测到 32 位版本的 MSBuild 内存不足,并切换到使用 64 位版本的 Visual Studio。

性能

Solution Wide Analysis(解决方案级分析)和 Find usages(查找用法)命令已被重构。 根据内部测试,它们的性能平均比以前提高了 20-40%。