Rider 2024.1 最新变化

Rider 2024.1 提供了一项新功能来监测应用程序的性能和收集关键指标,粘性行可以用来更好地了解您在代码中的位置并更快浏览代码,更新的 New Project(新建项目)对话框将使项目配置更快、更轻松。 此更新通过提供集合可视化器和显示两个断点之间的步进时间来帮助您进行调试。 游戏开发者可以受益于热门 Unity 资源 Odin Inspector 的一组新功能以及对 Unreal Engine 的 Slate UI 框架的支持。

主要更新

Monitoring(监测)工具窗口

新的 Monitoring(监测)工具窗口

Rider 2024.1 引入了 Monitoring(监测)工具窗口,可让您在运行或调试时监测 .NET 应用程序的性能并在后台收集关键指标。

了解详情

粘性行

我们在编辑器中引入了粘性行,旨在简化大文件的处理和新代码库的探索。 滚动时,此功能会将类或方法的开头等关键结构元素固定到编辑器顶部。 这将使作用域始终保持在视野中,您可以点击固定的行快速浏览代码。

集合可视化器

检查集合,例如数组、列表、字典和其他可枚举类型,以在调试期间更好地了解程序数据的状态,并识别与数据处理相关的潜在问题。

了解详情

更新的 New Project(新建项目)对话框

我们彻底重做了 New Project(新建项目)对话框,使新项目易于配置。 它提供了对 .NET 特定的项目配置和自定义模板参数的全面支持,您现在可以直接从对话框安装目标 SDK 和适当的 MAUI 工作负载。

了解详情

UX/UI

更新的 New Project(新建项目)对话框

我们彻底重做了 New Project(新建项目)对话框,希望减少新项目配置过程中的认知负担。 以下是更新的对话框中的变化:

  • 对所有 .NET 特定的项目配置选项的支持,例如创建 Blazor WASM 应用程序时用于渐进式 Web 应用的复选标记。
  • 对自定义项目模板中形参的支持。
  • 可以直接从对话框安装解决方案的目标 SDK。
  • 可以从对话框安装正确的 MAUI 工作负载。

用于缩小整个 IDE 的选项

此前,可以整体放大和缩小 IDE,这会同时调整所有 UI 元素的大小。 不过,最初的缩放比例被限制在 100-200% 范围内。 现在,我们添加了将 IDE 比例缩小至 70% 的功能,让您在调整内容的大小时更加灵活。

改进的 Terminal(终端)工具窗口

此版本重做了 Terminal(终端)工具窗口,引入了可视化和功能增强,旨在提高基于终端的任务的便利性和简单性。 此更新改进了工具的可视化效果,也扩展了其功能集。

您可以在 Settings/Preferences | Tools | Terminal | Enable New Terminal(设置/偏好设置 | 工具 | 终端 | 启用新终端)中启用新终端。

有关重做的终端的更多信息,请查看 IntelliJ IDEA 的这篇博文

代码分析

С# 支持

到集合表达式的更多转换

现在,您将获得建议,将源代码中的更多代码结构转换为 C# 12 中的集合表达式,例如空数组或 ImmutableArray 声明和初始化。

Collection was modified(集合已被修改)分析

我们添加了新的 Possible 'System.InvalidOperationException: Collection was modified'(可能的 'System.InvalidOperationException: 集合已被修改')检查,在 foreach 循环内迭代期间修改集合时,它会发出警告,因为此修改可能会导致运行时异常。 此分析了解集合修改后退出循环的情况,这些情况不会触发警告。 检查附带对应快速修复,可以帮助您立即解决此问题。

Generate | Formatting Members(生成 | 设置成员格式)更新

Generate | Formatting Members(生成 | 设置成员格式)可供生成样板代码来重写 ToString() 方法并为类型返回有意义的字符串。 从 2024.1 版本开始,此功能支持更多类型,例如 ISpanFormattableIUtf8SpanFormattableIFormattable

对异步方法中可处置资源的增强支持

  • [MustDisposeResource] 注解改进:C# 代码分析现在可以确保正确处置异步方法返回的资源(包括 Task<IDisposable>ValueTask<IDisposable> 中包装的资源),帮助您避免意外处置任务本身。
  • 类任务返回值:2024.1 版本中对类任务返回值的正确分析可以确保检查等待的资源是否已处置,并且包含通过 .ConfigureAwait(...).AsTask().Result 检索的资源。

Change Signature(更改签名)重构的更新

以下是我们对 Change Signature(更改签名)重构所做的一些改进:

  • 重构现在支持 Deconstruct 方法。 您可以添加、移除、重新排列和重命名形参,这些更改将反映在方法声明及其用法中。
  • 代码补全现在可用于类型形参。 这意味着,例如,需要为 List<> 指定类型时,您可以使用代码补全轻松选择所需类型,例如 int
  • 添加或更新形参时,类型命名空间会被自动缩短。 这有助于在应用重构后保持代码整洁和简单。 例如,如果在 Change Signature(更改签名)对话框中指定 System.Collections.Generic.List<System.Int16> 类型,在生成的代码中它将被自动缩短为 List<short>
  • 重构现在支持最新版本 C# 的更多功能,例如 inref readonly 修饰符以及 record 类型。

Make Static(设为 static)重构的更新

在此版本中,Make Static(设为 static)重构支持主构造函数形参。 它们位于 Introduce parameters(引入形参)列表中,并具有单独的图标帮助您轻松区分。 此重构也适用于局部函数。

解决方案级分析中的高资源利用率模式

我们正在为解决方案级分析积极完善高资源利用率模式,通过更有效地利用 CPU 并行性显著缩短分析时长。 我们改进了代码分析活动的内存分配分析,最大程度地减少垃圾回收所花费的时间。 优化过程仍在推进,我们欢迎您启用此模式并提供体验反馈。

性能

  • 现在,代码中的元素重命名更快、更高效。 此更改还会影响 Rider 的其他核心组件,提升多个功能的性能,包括 Find Usages(查找用法)。
  • 对于大型类,静态成员的 Move to Another Type(移动到其他类型)重构的性能得到了显著提高。

protobuf-net 库的支持

代码分析现在提供对 protobuf-net 库中 ProtoContract 特性和 ImplicitFields 枚举的支持。 这两项都可以用来标记隐式用于序列化的成员。 因此,此类成员不再使用 unused members(未使用的成员)警告进行标记。

F# 支持

现在,可以通过针对缺失成员的新快速修复、代码补全和 Generate(生成)重构在对象表达式中生成重写。

您现在还可以在搜索联合体用法时查看联合体 case。 这使类型实例的创建和模式匹配方式更容易了解。

我们添加了一个 new 后缀模板,用于为类和接口创建记录类型和对象表达式的实例。

为 F# 实现了粘性行支持,帮助在处理较长的类型和函数时更便捷地查看上下文。

F# 支持还包括其他新的快速修复和上下文操作。 您可以在 GitHub 上的完整版本说明中了解所有更改。

智能拼写检查器

继 ReSharper 之后,Rider 也获得了升级的拼写和语法检查器。 新的拼写检查器支持 20 多种语言,能够在 Rider 支持的编程语言(C#、C++、VB.NET)、标记语言(HTML、XML、XAML)和注释中捕获自然语言错误。

.NET 调试

集合可视化器

Rider 2024.1 中的集合可视化器提供集合(数组、列表、字典和其他可枚举类型)的图形表示,可用于展开和收起元素、查看各个值,以及轻松浏览数据结构。 这有助于在调试期间了解程序数据的状态以及诊断与收集、操作或数据处理相关的问题。

步进时间

调试时,能够评估调试器在两个断点之间执行代码所需的时间非常有价值。 如果您发现步进时间过长,则可能表明代码存在性能问题。 使用 Rider 调试应用程序时,您将看到一个内联提示,显示上一个断点与当前断点之间经过的时间。

内联断点

内联断点

从此更新开始,如果存在多条语句,Rider 将允许您在单行代码上设置多个断点。 您可以使用相关的内联提示或快捷键 (Ctrl + F8) 设置断点。

重做的 Run to cursor(运行到光标)嵌入选项

在 2024.1 版本中,我们引入了 Skip to cursor(跳到光标)选项,使其与 IntelliJ IDEA 中的运作方式保持一致。 新的 Run to Cursor(运行到光标)嵌入选项提供了在调试时快速导航到特定代码行的方式。 程序挂起后,您可以将鼠标悬停在您希望继续执行的代码行上。 然后,您可以利用 Run to Cursor(运行到光标)弹出窗口执行代码,直至到达光标所在的行。

Blazor WASM 的热重载

热重载现在可用于运行和调试 Blazor WebAssembly (WASM) 应用程序。 热重载适用于 .cs.razor.css 文件(包括带作用域的 .razor.css 文件)。

该功能默认启用。 您可以前往 Settings/Preferences | Build, Execution, Deployment | Hot Reload(设置/偏好设置 | 构建、执行、部署 | 热重载)进行配置。

对 .NET 进程转储的支持

调试期间,进程转储至关重要,因为它们允许您在发生错误时检查程序状态,即使问题不容易重现。 此前,Rider 只能处理 C++ 核心转储。 现在,IDE 还允许您为 .NET 进程导入转储。

要导入进程转储,请转到 Run | Debug Core Dump(运行 | 调试核心转储)或将转储文件拖放到编辑器中。

AI Assistant

Explain with AI(使用 AI 解释)

我们在单元测试失败、构建失败或调试会话期间抛出的异常或错误消息旁添加了 Explain with AI(使用 AI 解释)按钮。

Rename with AI(使用 AI 重命名)

重命名局部变量时,您将在代码补全弹出窗口中获得 AI 赋能的名称建议。

AI Assistant 插件

请注意,在版本 2024.1 中,AI Assistant 已解绑,现在作为独立插件提供。 这一改动是为了在使用 AI 赋能的技术方面提供更多的决策灵活度,让您能够在工作环境中更好地控制偏好和要求。 AI Assistant 仍然需要有效的 JetBrains AI 订阅

游戏开发

Unreal Engine

C++ 支持

C++ 支持的显著增强包括:

  • Change Signature(更改签名)提供了新功能,包括在指针、引用或值类型之间更改形参类型。
  • Call Tracking(调用跟踪)现在支持传出调用链。
  • 您现在可以轻松自定义生成的文档注释的样式。 此外,文档注释中还提供语法检查。
  • C++20 模块重做的实现提升了性能并提供了对内部模块分区的支持。

Rider 的 C++ 支持由 ReSharper C++ 驱动。 查看 ReSharper C++ 2024.1 最新变化了解更多详细信息。

蓝图调试器调用堆栈

我们很高兴向调试器调用堆栈添加蓝图支持。 Rider 现在不会在调用堆栈中显示匿名内存地址,而是显示蓝图调用相关信息,并与现有 C++ 代码交错。 请确保更新到最新版本的 RiderLink 插件

Slate 格式设置和智能导航

此版本添加了对 Unreal Engine 的 Slate UI 框架的支持,让 Rider 能够使用 Go to Definition(转到定义)和 Find Usages(查找用法)命令,以及 Rename(重命名)重构来重命名 Slate 宏声明的符号。

无论是作为重新设置格式操作直接调用还是在您输入时,Rider 现在都将正确设置 Slate DSL 代码格式。

智能蓝图功能

Rider 与蓝图功能的智能集成进一步发展,支持在重命名 UENUM 实例时添加核心重定向,C++ 代码中的资源名称获得资产路径补全。

Perforce 更新、Visual Studio 互操作等等

我们继续完善 Perforce 支持,提供了多项实用体验改进,简化了会话过期时的登录,并使用户在 Rename(重命名)重构期间可以更轻松地将文件放入正确的更改列表。

我们还修正了 UnrealBuildTool 的问题,该问题有时会导致之前在 Visual Studio 中构建的项目被完全重建。 这极大地改善了两款 IDE 的使用体验。 Unreal Engine 5.4 和所有版本的 Rider 均已获得这项修正。

另请了解 ReSharper C++ 引擎中的所有 C++ 更改

Unity

Odin Inspector 支持

我们非常高兴地宣布,我们已与 Sirenix 的同仁达成合作,为热门 Odin Inspector Unity 资源提供支持。 Rider 将识别并高亮显示 Odin Inspector 序列化的字段和属性,为布局特性中的组名称提供补全和检查,并显示 Odin 的 GUIColor 类的预览。 它还会识别 Odin 的 range 特性,并在 Rider 自己的整数值分析中使用这些值,如果值超出范围,则会发出警告。

了解详情

着色器变体改进

Rider 2024.1 基于 2023.3 版本中引入的着色器关键字支持构建。 您可以在编辑着色器文件时启用或禁用不同的关键字,从而启用和禁用不同预处理程序分支中的高亮显示和代码分析。 此版本增加了对隐式着色器关键字、阶段特定的局部关键字以及带有 _KEYWORD_DEFINED 后缀的预处理程序指令的支持。

null 分析和对象生命周期检查

此版本更新了检查底层游戏对象生命周期时 Rider 如何高亮显示 Unity 对 null 相等比较的可能意外处理。 如果现代 C# null 检查绕过生命周期检查,Rider 现在会高亮显示 null 比较何时执行检查,而不是显示警告。

我们将在后续博文中详细说明这一点。

调试、资源索引编制等

由于 Rider 提供了更多 DOTS 特定的支持,调试得到了提升,例如在 Watches(监视)窗格中检查 IJobEntity 实例时添加 Entity 子节点。 暂停点也已更新为可与 DOTS 系统配合使用。 纹理调试值可视化器已修正了一些 bug,新的集合可视化器将有助于游戏对象的集合。

另外还有一些资源解析性能改进,识别序列化字段的修正,以及其他小型修正和更新。 您可以在更改日志中了解详情

Godot

我们推进了 Godot 支持,为可选插件带来更多更新,您可以从设置中的 Plugins(插件)标签页安装该插件。 最近的更改包括:

  • 适用于更多 Godot 文件类型(包括 .gd.tscn.tres.godot)的语法高亮显示,以及 .gdshader 的改进高亮显示。
  • Rider 现在将自动检测正确的 .NET 运行时,以从 launchSettings.json 运行或调试 Godot 测试 (JetBrains/godot-support#125)。
  • 我们在主工具栏中添加了 Start Godot Editor(启动 Godot 编辑器)按钮,类似于对 Unity 可用的操作 (JetBrains/godot-support#119)。

Web 开发

@addTagHelper@removeTagHelper 指令解析引用

Rider 现在可以为 Razor 视图中 @addTagHelper@removeTagHelper 指令内指定的程序集名称解析引用。 因此,您现在可以受益于代码补全、查找用法以及便利的代码导航。

此外,Rider 会高亮显示任何未解析的程序集名称作为警告,以便您在 Razor 视图中轻松识别。

Blazor Component(Blazor 组件)文件模板

现在,您可以在生成 Blazor Component(Blazor 组件)文件模板时生成额外文件,例如 .razor.cs.razor.css.razor.js

适用于 React props 和状态创建的快速修复

Rider 2024.1 为 React 新引入了多个快速修复,可供动态创建 props 和状态。 您可以使用快捷键 Alt+Enter 应用这些快速修复。

参阅此页详细了解有关 Web 开发的改进。

版本控制

此版本为 Rider 中的 VCS 支持带来更新,包括:

  • 适用于 GitLab 和 GitHub 仓库的编辑器内代码审查。
  • Git 工具窗口中的 CI 状态检查。
  • 防止大文件提交到仓库。
  • Commit(提交)工具窗口中的新 Stash 标签页。
  • 从比较中排除文件夹和文件的选项。
  • 还有更多!

此处详细了解所有更改。

处理数据库

Rider 2024.1 数据库处理方面的最显著改进包括:

  • 数据编辑器中的本地筛选器。
  • 单记录视图。
  • 移动 CSV 文件中的列。
  • 针对 UUID 的更多功能。
  • 多行 INSERT 的对齐代码样式。
  • GROUP BY 子句的列补全。

参阅此页面详细了解有关处理数据库的改进。

插件

适用于 Rider 的 .NET Aspire 插件

.NET Aspire

.NET 8 SDK 引入了 .NET Aspire – 处理在 .NET 堆栈上构建分布式应用程序的复杂问题的新方式。 为了回应这一创新,我们提供了新的集成式工具 – 适用于 Rider 的 .NET Aspire 插件。

插件适用于 Rider 2024.1,可以直接从 JetBrains Marketplace 或通过 Settings/Preferences | Plugins(设置/偏好设置 | 插件)下载。

这篇博文中详细了解 .NET Aspire 和新插件。

对冻结对象堆 (FOH) 的支持 dotUltimate

内置的 dotMemory 分析工具现已提供对冻结对象堆 (FOH) 的支持 – FOH 最初随 .NET 6 SDK 引入,作为垃圾回收性能改进的一部分。

FOH 会为不可变对象分配专用内存区域。 这些对象在分配后不会更改,也不会进行垃圾回收。 对此技术的支持使 dotMemory 能够对 FOH 中不可变对象使用的内存进行更详细的分析,促进内存使用的优化。

桌面 MAUI 应用的性能和内存分析 dotUltimate

内置的 dotTrace 和 dotMemory 分析器现已支持 MAUI 和 .NET macOS 应用程序。

支持的目标框架:

  • MAUI Windows:net8.0-windowsnet7.0-windows
  • MAUI Mac:net8.0-maccatalystnet7.0-maccatalyst
  • macOS 应用程序:net8.0-macosnet7.0-macos

点击此处详细了解可用分析模式。

新的 Azure Toolkit 插件

新的 Azure Toolkit for Rider 插件是一个开源项目,可以帮助 .NET 开发者轻松创建、开发、配置、测试、管理高度可用且可扩缩的 Web 应用并将其部署到 Azure。

该插件可以在 JetBrains Rider 中下载安装,也可以从 JetBrains Marketplace 获取。

其他

增强的 GitHub Actions 支持

我们在此版本中增强了对 GitHub Actions 的支持。 我们的开发重点是通过提供专为 GitHub Actions 设计的更高效智能的功能来丰富您的 CI/CD 工作流。

增强功能的列表包括:

  • 对多种 GitHub Action 上下文的广泛自动补全支持。
  • action.yml 的品牌功能。
  • Docker 镜像补全。
  • JavaScript 文件路径补全。

有关详情,请查看 IntelliJ IDEA 博客上的这篇博文

将项目文件拖放到 Type dependency(类型依赖关系)图上的选项。

类型依赖关系图增强

2023.3 版本中引入的类型关系图获得了功能升级,包含配置关系图的新方式,即:

  • 使用 Search(搜索)将节点添加到关系图的选项。
  • 从关系图视图移除节点的选项。
  • 为关系图中的特定类型添加相关类型的功能。
  • 将项目文件拖放到 Type dependency(类型依赖关系)图上的选项。

要了解为应用程序生成类型依赖关系图的更多方式,请参阅这篇博文

支持 WebAssemblies 的 WebCIL 打包格式

反编译器

Rider 内的 Assembly Explorer 现已支持 WebAssemblies 的 WebCIL 打包格式

支持涵盖:

  • WebCIL 的反编译。
  • Assembly Explorer 中查看 .wasm 文件的功能。
  • Assembly Explorer 中 WASM 节点的元数据子树,包括 WASM 和 WebCIL 头。