Rider 2023.1 改进了对 C# 的支持,添加了一组检查来优化和加快处理不同类型集合的工作,以及在代码中引入 null 检查的多项可调整方法。 Rider 游戏开发现已升级,引入了对 Unity 的 Data Oriented Tech Stack (DOTS) 和 Unreal Engine 5.2 的支持,包括蓝图文件格式的最新更新、对 Godot 4 的支持,以及大量游戏开发工作流增强功能。 最新版本的 IDE 还对编辑器进行了一些调整,针对版本控制工具和 Docker 做出了改进,并对新 UI 和整体用户体验带来一系列优化。
跟随 Unity 从面向对象的设计转向面向数据的设计,Rider 2023.1 引入了对面向数据的技术栈 (DOTS) 的支持 – 这是一种范式转换、CPU 友好的游戏构建方式。
我们添加了检查和相应的快速修复,通过减少查找次数来优化处理集合的工作。 例如,Rider 现在会建议移除冗余的 Contains
和 ContainsKey
检查或改用 TryAdd
和 TryGetValue
方法。
Rider 与 Perforce 的集成得到了重大升级,将 Perforce 添加到 Version Control Systems (VCS)(版本控制系统)微件中。 针对 Perforce 的 VCS 微件提供了对 Commit(提交)、Revert(还原)和 Update Project(更新项目)等核心操作的快速访问。 它还会指示当前工作区并显示连接的状态。
我们引入了一组检查和相应的快速修复,通过减少集合中的查找次数来优化和加快处理不同类型集合的工作:
HashSet
或其他实现 ISet
接口的集合之前移除 Contains(item)
检查。 Dictionary
或其他实现 IDictionary
接口的集合之前移除 ContainsKey(key)
检查。 Dictionary
集合或从 Dictionary
继承的集合使用 TryAdd(key, value)
。 IDictionary
集合使用 TryGetValue(key, out value)
。 我们提供了新的 Syntax style(语法样式)设置,帮助您在模式中实施一致的 not null
检查样式。 它由两个选项组成:空递归模式语法 { }
和否定模式 not null
,后者为默认模式。 您随时可以在 Settings/Preferences | Editor | Code Style | C# | Syntax Style(设置/偏好设置 | 编辑器 | 代码样式 | C# | 语法样式)标签页上调整行为。
使用 not null 模式有一个缺点,它不允许像递归模式 { LastName: { } lastName }
那样为检查值引入变量名。 我们在 not null
模式上添加了 Add pattern variable(添加模式变量)上下文操作,查找访问相同值的表达式(因为我们要引入一个变量名),并将所有表达式替换为新引入的名称,整合对相同值的所有访问。
null
检查的 ArgumentNullException.ThrowIfNull
样式 .NET 6.0 SDK 为 null
检查引入了新的 API – ArgumentNullException.ThrowIfNull
。 我们的代码分析引擎从那时起就可以识别这种检查方式,但没有选项将此 API 用作 Rider 生成的 null 检查的默认样式。
在 2023.1 版本中,我们为 Rider 向 Settings/Preferences | Editor | Code Style | C# | Null checking(设置/偏好设置 | 编辑器 | 代码样式 | C# | null 检查)添加了 ArgumentNullException.ThrowIfNull
模式。
如果您大量使用属性模式匹配,请尝试我们的新检查和快速修复,当多个属性模式在代码流中一起出现时提取通用元素。 Extract common property pattern(提取通用属性模式)快速修复生成的代码可以将通用属性模式移动到更高级别的模式,帮助您减少代码重复。
C# 开发者通常依赖 #region
指令和 IDE 中的代码折叠来组织代码。 重构可能会留下一些空 #region
,这会使代码在收起时看起来具有误导性。 借助这项新的代码检查,您将能够识别折叠状态的空 #region
,并使用相应的快速修复清理代码。
span.SequenceEqual(“str”)
代码分析现在有一项代码检查,该检查会建议将 span.SequenceEqual("stringLiteral")
替换为 span is "stringLiteral"
– 这是比调用函数更清晰、更方便的 C# 语法解决方案。
C# 中的 lambda 表达式可以具有隐式类型形参和推断的返回值类型。 不过,添加显式类型可以阐明复杂重载解析场景中的代码。 从 C# 11 开始,还可以为 lambda 表达式添加返回值类型规范。
为此,我们在 2023.1 版本中引入了 Insert return type specification(插入返回值类型规范)上下文操作。 该操作可以应用于所有作用域,包括方法、类、文件、项目或整个解决方案。
C# or
/and
/not
模式适合紧凑值检查,但可能不如传统表达式(例如 ||
/&&
/!
)容易识别。 如果遗漏圆括号,它们还可能产生难以发现的错误。 为了帮助解决这个问题,我们引入了新的代码分析,可以就复杂模式中的“死”检查向您发出警告。
我们继续改进对 C# 11 列表模式的支持。 借助新增的 Convert to list pattern(转换为列表模式)上下文操作,您可以将集合长度检查转换为列表模式语法。 它适用于所有可以检查集合长度的上下文。
面向数据的技术栈 (DOTS) 是 Unity 的一项重大架构更改。 它将组件数据存储在连续向量中,让系统能够以 CPU 效率更高的方式访问和修改。 这将提高性能,特别是对于更大、更复杂的项目。
在这个版本中,我们引入了对 Unity DOTS 的支持,巩固 Rider 最具创新性的游戏开发 IDE 的形象。
Rider 2023.1 带有以下新功能:
这篇博文和演示详细介绍了 Rider 中的 DOTS。
虽然 Wi-Fi 可以用来调试 Android 游戏,但有时最好的选择还是使用线缆。 Rider 2023.1 现已支持通过 USB 调试 Android 游戏。
使用 Attach to Unity Process(附加到 Unity 进程)对话框查看哪些项目正在连接的设备上运行,并开始调试。
通过 Attach to Unity Process(附加到 Unity 进程)对话框调试播放器时,Rider 2023.1 将自动创建临时运行配置。 这使启动另一个调试会话更加简单。 您可以永久保存运行配置,并与团队共享。 这适用于所有受支持的播放器,包括台式机、移动设备、游戏主机和 USB 设备(iOS 或 Android)。
从 Unity 2022.2 开始,UI Toolkit 是为 Unity 编辑器编写 UI 扩展程序的推荐方式。 为了帮助您入门,我们添加了 3 个基于 UI Toolkit 的新的可自定义文件模板:创建编辑器窗口、属性绘制器或自定义检查器编辑器。 它们仅适用于 Unity 2022.2 或更高版本,IMGUI 版本仍然可用。
与往常一样,另外还有许多更改和更新,例如更准确地检测代码中的序列化字段,包括使用派生类型和 [SerializeReference]
特性的复杂场景。 我们还改进了对在 Unity 动画中查找 C# 代码用法并将方法高亮显示为事件处理程序的支持。 格式设置引擎也已更新,回应了将 [Header]
特性置于单独行上的热门请求。
Epic Games 在 Unreal Engine 5.1 和 5.2 中将 UnrealHeaderTool (UHT) 合并到 UnrealBuildTool (UBT) 中。 Rider 2023.1 版本已为这些更改做好准备,Rider 中的 UHT 集成将适用于新的 Unreal Engine 版本。 Rider 版本还支持蓝图文件格式的最新更新,这些更新将包含在 Unreal Engine 5.2 中。
重做的 Unreal Class…(Unreal 类…)上下文操作提供一系列父类选择以及指定类是 public 还是 private 的选项。 总体看来,对话框现在的外观和功能更符合 Unreal Engine 的对应部分。
如果蓝图文件未能被 Rider 解析,Rider 现在将在 Problems View(问题视图)窗口的单独 Blueprints(蓝图)标签页中显示解析错误。 这使您可以在原生文件系统资源管理器中找到有问题的文件。 每个问题都包含检测到的错误类型的简短描述。
Rider 2023.1 可以在 macOS 和 Linux 上构建 Unreal Engine 游戏时解析 Clang 编译器生成的消息。 Build Output(构建输出)工具窗口中的所有 Clang 警告和错误都被正确解析,包括文件链接。 双击链接将导航到代码中存在警告或错误的确切位置。
在宏上悬停鼠标时,您现在可以在工具提示中看到扩展预览,带有完整的语法高亮显示和正确的代码格式设置。 您仍然可以使用 Substitute macro call(替换宏调用)上下文操作在编辑器中直接展开,但即时预览使宏操作更简单。
Rider 现在为 Unreal Engine 解决方案提供内置的 UInterface 实时模板。 类似于现有的 UCLASS
、USTRUCT
和 UENUM
实时模板,UInterface 可用于快速添加遵循 Unreal Engine 惯例的新接口类,省去手动创建的时间和精力。
适用于 Rider 的最新版 Godot 插件包含以下更新和修正:
res://
补全有所改进,提高了可用性和可见性。 对于某些已知 API 调用,例如 GD.LoadPackedScene
,字符串字面量的补全将立即可用,甚至在输入 res://
前缀之前就已可用。 Settings/Preferences | Editor | General | Appearance | Show Whitespaces(设置/偏好设置 | 编辑器 | 常规 | 外观 | 显示空格)中提供了一个新的 Selection(选区)复选框,允许您配置这个设置,让 Rider 仅在选择代码时将空格显示为小点。
Rider 中的代码编辑器现在将为 Avalonia XAML (.axaml
) 和 C# 文件中的值和引用呈现颜色和画笔预览,与对 WPF 应用程序的操作相同。
我们实现了一种方式来让 Rider 隐藏所选运算符的类型转换提示。 要隐藏嵌入提示,首先将文本光标置于运算符旁边,使用 Alt+Enter 快捷键触发上下文菜单,然后转到 Configure Inlay Hints | Type Conversion Hints(配置嵌入提示 | 类型转换提示)并选择 Hide for...(隐藏范围…)操作。
您还可以转到 Settings / Preferences | Editor | Inlay Hints | C# | Type Conversion Hints(设置/偏好设置 | 编辑器 | 嵌入提示 | C# | 类型转换提示)来配置要隐藏类型转换提示的运算符列表。
更新的 Typo(拼写错误)检查不再检查哈希和特殊值的拼写,也不会将其报告为拼写错误。 此更新涵盖以下值:
Md5
、Sha1
、和 Sha256
十六进制值。 shaNNN-
前缀的 Sha384
和 Sha512
base64 编码的完整性值。 JWT
令牌。 与在 NUnit 中相同,Rider 现在可以在 xUnit 测试中显示特性 InlineData
和 InlineAutoData
的形参名称提示。
Rider 2023.1 在 Vue 模板表达式中添加了对 TypeScript 的支持。 添加到脚本标记时,Vue 模板表达式现在与 lang=”ts”
同步。 因此,Rider 可以更好地评估 TypeScript,提供与脚本标记内容相匹配的偏好设置和相关重构。 您可能已经注意到,纯 .js
和 .ts
文件的设置和重构之间存在差异。 现在,lang 特性将匹配。
Rider 在您输入 ${
时会自动将带单引号或双引号的字符串转换为模板字面量。 这适用于原始字符串以及 JSX 属性。
了解详情:WebStorm 2023.1 最新变化
现在可以放大和缩小 Rider,同时增加或缩减所有 UI 元素的大小。 从主菜单中,选择 View | Appearance(视图 | 外观),调整 IDE 的缩放比例。
在 Rider 2023.1 中,我们引入了一个新的布局选项,允许您统一侧面工具窗口的宽度或保留在自定义布局时自由调整其大小的能力。 新的 Remember size for each tool window(记住每个工具窗口的大小)复选框位于 Settings/Preferences | Appearance & Behavior | Tool Windows(设置/偏好设置 | 外观与行为 | 工具窗口)中。
为了提供更有意义和更准确的搜索结果,我们将机器学习排名进一步集成到 Search Everywhere(随处搜索)(按两下 Shift)功能中。 Classes(类)标签页中的排序算法现在也默认由机器学习驱动,与 Actions(操作)和 Files(文件)标签页中的结果相同。
对于新 UI,我们引入了拆分工具窗口区域的选项,让您可以轻松排列窗口。
沿边栏将工具窗口图标拖动到分隔符下,即可将工具窗口添加到此区域下方。 或者,您可以右键点击图标调用上下文菜单,使用 Move to(移至)操作为工具窗口分配新位置。
为了改善较小屏幕上 Rider 新 UI 的用户体验,我们引入了 Compact Mode(紧凑模式),此模式降低了工具栏和工具窗口标题的高度,缩小了间距、填充以及图标和按钮,提供更为统一的外观。
要打开 Compact Mode(紧凑模式),请转到 View(视图)菜单并选择 Appearance | Compact Mode(外观 | 紧凑模式)。
我们为 macOS 用户实现了 IDE 新 UI 中最热门的功能请求之一 – 项目标签页。 有多个打开的项目时,您现在可以使用主工具栏下显示的项目标签页轻松切换。
我们在新 UI 中添加了 Show Hidden Tabs(显示隐藏的标签页)功能。 在打开的标签页旁边,现在有一个下拉菜单,显示打开的标签页的完整列表。 此前,它们可能已被隐藏。
我们使用更柔和的颜色重新设计了主窗口头的 Run(运行)微件,使其外观更精致、更悦目。
对于 Rider 2023.1,我们微调了 IDE 内部的代码审查过程。 我们的研究表明,用户通常会在需要浏览代码时在 GitHub 和 IDE 之间切换。 为了改进这个工作流,我们重做了 Pull Requests(拉取请求)工具窗口。
窗口现在会为每个拉取请求提供一个专属标签页,仅显示关键信息,帮助用户专注于手头的任务。 我们还添加了一个按钮,用于轻松执行拉取请求当前状态下最重要的操作。
在 Rider 2023.1 中,我们在 Create New Branch(创建新分支)弹出窗口中实现了自动补全。 为新分支输入名称时,IDE 将根据现有本地分支的名称建议相关前缀。
我们改进了 Branches(分支)弹出窗口的实用性。 例如,分支被分组并存储在可扩展列表中,导航更加轻松。
Schema Compare(架构比较)是数据库开发和维护的必备工具。 它允许用户比较两个数据库,快速识别和消除差异,并使数据保持最新状态。
Rider 2023.1 为连接的数据库、SQL Server 数据库项目和 .dacpac
文件引入了 Schema Compare(架构比较)。 要启动比较,在 Solution Explorer 中右键点击数据库项目文件,选择 Schema Compare…(架构比较…)。
现在可以使用 Fast Mode(快速模式)在 Rider 中运行 Docker 项目。 此前,您只能将其用于调试。 我们还使 Fast Mode(快速模式)可与更广泛的 Dockerfile
一起使用。 最后,我们通过在解决方案启动期间拉取和检查 Docker 镜像来使 Fast Mode(快速模式)更快。
Rider 2023.1 现在还可以在打开解决方案时自动从 .dcproj
项目文件生成 Docker Compose 运行配置。 指定了 DockerfileFile 项目属性或 launchSettings.json
文件中包含 Docker 配置文件时,这个版本的 IDE 还能够生成 Dockerfile
运行配置。
在启动设置配置文件中,指定 httpPort
、sslPort
、publishAllPorts
和 useSSL
属性可以实现额外自定义。
每当您在 Fast Mode(快速模式)下将应用程序部署到 Docker 时,都需要在主机和容器之间共享生成的 HTTPS 开发证书。 我们为 Docker 运行配置添加了 Share generated SSL certificate(共享生成的 SSL 证书)选项来自动执行此步骤。 只有在 Windows 和 macOS 上才能共享可信证书,因此在 Linux 上您需要手动信任证书。
现在,您可以为项目添加 Docker Compose,一次轻松处理多个容器。 为此,调用项目的上下文菜单并选择 Add | Docker Compose File(添加 | Docker Compose 文件)生成:
docker-compose.yml
文件。 docker-compose.yml
的几个运行配置。 Docker Compose 节点的 Dashboard(仪表板)标签页现在将来自各个 Docker Compose 容器的日志拉取到一处显示,并实时更新。
您现在可以轻松连接到 Azure 容器注册表。 转到 Settings/Preferences | Build, Execution, Deployment | Docker | Docker Registry(设置/偏好设置 | 构建、执行、部署 | Docker | Docker 注册表),在 Registry(注册表)输入字段中选择 Docker V2 进行设置。
有时,您可能需要在安装在自定义文件夹中的运行时上运行应用程序。 对于这种情况,我们为 Run/Debug Configurations(运行/调试配置)页面上的 Runtime(运行时)设置引入了 Add Custom Runtime(添加自定义运行时)选项。
我们还在 Runtime(运行时)下拉列表中添加了默认运行时版本的路径。
Rider 2023.1 还添加了对 launchSettings.json
文件中 DebugRoslynComponent
命令的支持,帮助您轻松调试 Roslyn 组件。
现在,您可以将 Rider 的调试器轻松重新附加到它被附加到的最后一个进程,只需转到主菜单中的 Run | Reattach to Process...(运行 | 重新附加到进程…)或使用键盘快捷键 Ctrl+Alt+Shift+F5。 新操作在第一个调试会话后变为活动状态。
Rider 现在可以调试 WebAssembly (WASM) .NET 应用程序的启动代码。 此前,WASM 调试器只能在大多数项目完成应用初始化后才能附加,因为它需要一些时间来执行端口计算、连接初始化等。 延迟使得启动时代码无法调试。
现在,Rider 会等待页面目标初始化,连接调试器,然后才开始实际的应用加载。 这使应用初始化逻辑早期阶段设置的断点可被捕获。
在 Rider 中启动 ASP.NET Core 应用程序的调试会话时,它会触发 IDE 为其打开新的浏览器窗口或标签页。 之前,运行多个调试会话会留下多个打开的标签页,只能手动关闭。
现在,在启用 JavaScript 调试器的情况下调试 ASP.NET Core 应用程序时,Rider 会在您停止进程时关闭相应的浏览器标签页。
我们引入了新的后缀模板 match
、for
和 with
来帮助您编写所需的样板代码。
开始新的 match
表达式时,会出现为 union
、enum
、bool
和元组值生成所有用例的建议。
我们为 F# 在字符串字面量中添加了对正则表达式的支持(感谢 Saul Rennison 的大力支持)。 传递使用 [RegexPatternAttribute]
或 [StringSyntax(StringSyntaxAttribute.Regex)]
注解的字符串形参时,或者字符串字面量旁边存在带注释的 //language=regex
时,Rider 会将字符串作为正则表达式处理,高亮显示语法和错误,并提供自动补全。
match
表达式中生成缺失的模式分支。 您可以在这里找到 F# 更新和修正的完整列表。
Rider 2023.1 拉开了简体中文、韩语和日语本地化第一阶段的序幕! 您将获得部分本地化的 UI、代码检查、Alt+Enter 菜单、工具窗口和通知,包括用于 Unity 和 Unreal Engine 支持的通知。
我们引入了 Trigger Continuous Testing(触发持续测试)操作,以及为其设置快捷键的选项。 这项操作可以直接触发连续测试,而以前,您只能通过构建或保存项目来间接进行。
要为此操作分配快捷键,请转到 Preferences/Settings | Build, Execution, Deployment | Unit Testing | Continuous Testing(偏好设置/设置 | 构建、执行、部署 | 单元测试 | 持续测试),选择 Trigger Continuous Testing on…(触发持续测试的快捷键…),然后设置您需要的快捷键。
初步 Astro 支持已经推出,新插件可在 Rider 中使用。 您可以从 JetBrains Marketplace 下载 Astro 插件,也可以转到 Preferences/Settings | Plugins(偏好设置/设置 | 插件),搜索“Astro”并直接从 IDE 安装。
插件提供基本功能,例如语法高亮显示、带自动导入的代码补全、重构、导航、意图、代码折叠、Emmet 支持和正确格式化。
Rider 2023.1 包含针对代码导航的改进和修正。 Rider 现在会在 Structure(结构)视图工具窗口中显示继承的成员,我们恢复了 Rider 在 Structure(结构)视图中显示反编译代码的类成员的功能。
Rider 将在启动 Go to File Member(转到文件成员)命令时使用 IntelliJ IDEA 的 Structure(结构)视图弹出窗口。 这将使 IDE 能够显示文件的结构,并允许它显示来自已编译基类型的符号。 我们还在弹出窗口中实现了分组,让您可以快速分辨出每个条目的位置。
Reformat inactive preprocessor branches in file(重新格式化文件中停用的预处理程序分支)是我们在 Rider 2023.1 中为代码清理引入的新任务类型。 这项任务使您能够重新格式化停用的预处理程序分支。 它一次只能应用于整个文件,并且仅适用于 C# 源。
这项任务无法重新格式化隐藏在始终为 false 的预处理程序指令 #if
后的代码。 这种限制的两个最明显示例是 #if false ... #endif
和 #define A #if !A ... #endif
构造。
现在,使用工具栏中的 Run(运行)按钮运行测试时,也将考虑在 Unit Tests(单元测试)和 Unit Test Coverage(单元测试覆盖率)工具窗口内应用于单元测试树的文本搜索筛选器。 只有满足搜索条件的测试才会在列表中保留并运行。
我们改进了 Rider 处理项目中文件重命名的方式。 从这个版本的 Rider 开始,重命名解决方案中的文件时,会出现一个对话框,其中包含重命名所有相关符号(类、接口等)以匹配更改的选项。