Rider 最新变化

Rider 2021.3 现已正式支持 .NET 6 SDK,包括热重载功能。 它带有完全重新设计的主工具栏和 Debug(调试)标签页,以及新增的 Problems View(问题视图)工具窗口。 Rider 也将支持更多 C# 10 功能,例如文件范围命名空间和 global using 指令,帮助您高效地使用最新语言功能。

它还更新了 Unity 和 F# 支持、保存时 Reformat and Cleanup(重新格式化和清理)、.NET 6、.NET 5 和 .NET Core 3.x SDK 的 XAML 预览以及对 Apple 芯片的支持。

NET 6 SDK 支持

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

  • 项目模板。
  • 最新的目标框架。
  • 最新的 NuGet API。
  • 热重载。
  • Blazor WebAssembly 调试。
  • 针对新 SDK 创建/运行/调试项目。
  • .NET 6 项目的 ASP.NET 基架。

Rider 还为属于 .NET 6 SDK 的 Xamarin iOS 和 Xamarin Android 项目提供了早期支持。

热重载

Rider 已支持 .NET 6 热重载功能! 当您在应用运行时修改应用中的托管源代码时,Rider 会询问您是否要将此更改应用于正在运行的应用而不重新启动应用。 注意文本编辑器顶部的黄色 Sources are modified(源已修改)通知栏。 接受更改后,应用将即时更新,您可以继续使用更新后的应用。

使用 .NET Project(.NET 项目)和 .NET Launch Settings Profile(.NET 启动设置配置文件)运行配置时,热重载自动启用。

新增了一个用于启用和禁用热重载功能的专用页面:Preferences/Settings | Build, Execution, Deployment | Hot Reload(偏好设置/设置 | 构建、执行、部署 | 热重载)。

限制:

  • 热重载会话期间的调试仅适用于 Windows 系统,您可以将热重载与调试器一起使用,并在步进和恢复时自动应用更改。 热重载在不调试时可以跨平台运作。
  • 热重载不支持 F# 和 VB.NET 应用程序。 此外,热重载不支持对 WPF、Windows Forms 和 .NET MAUI 等框架中的 UI 格式所做的更改。 也不支持 Blazor WebAssembly (WASM)。
  • 要显示您对 Razor Pages 所做的更改,您需要在浏览器中重新加载该页面。 未来版本将添加自动页面重新加载。

了解详情:Rider 2021.3 中 .NET 6 的热重载

UI/UX

重新设计了主工具栏

旧版主工具栏有一些我们想要消除的问题。 其中图标过多,而且大部分并不常用。 VCS 和导航功能无法被发现。 最重要的是,无法控制多个运行配置。

Rider 2021.3 带有完全重新设计的主工具栏。 我们希望以新的设计为用户提供一个更干净实用的工具栏。 包括:

  • Back(后退)和 Forward(前进)按钮,这是 Rider 上下文导航的基础。
  • 用于访问和操作所有 VCS 相关功能的 VCS 微件。 此微件现在位于更靠近 Commit(提交)工具窗口的位置。
  • 大的 Search Everywhere 字段,用作全局搜索函数的主要入口点。
  • 用于管理解决方案相关配置的 Solution Configuration(解决方案配置)微件。
  • 新的 Run/Debug(运行/调试)微件,可让您轻松管理和控制运行配置。

不过,我们不想为已经习惯旧工具栏的 Rider 用户带来不便,因此,新工具栏默认仅对新安装的 Rider 启用。 如果您已经安装了 Rider 但想尝试新的工具栏,您随时可以在 View | Appearance | Toolbar(视图 | 外观 | 工具栏)(而不是 Toolbar Classic)下启用。

Problems View(问题视图)

我们引入了 Problems View(问题视图),将解决方案的所有潜在问题集中在一个地方! Problems View(问题视图)(Rider UI 中的 Problems(问题)标签页)是一个工具窗口,汇总了您的解决方案中存在的所有潜在问题,例如项目加载错误、失败的 NuGet 还原过程、来自打开的文件的检查以及所有 SWEA 错误。 工具窗口由三个标签页组成。

Current File(当前文件)

您可以在该标签页下找到 Rider 代码分析在当前文件中发现的所有错误、警告、建议和提示。 它的工作方式与我们基于 IntelliJ 的 IDE中的工作方式相同,位于垂直滚动条顶部的 Inspection(检查)微件直接通向此标签页。

Toolset, Environment(工具集、环境)

此标签页汇总了与解决方案加载活动、NuGet 还原过程等相关的所有诊断和消息。 每个问题都具有对应描述和修正列表(如果存在)。 此前,您需要打开 Event Log(事件日志)工具窗口才能找到此类诊断消息的详细信息。

All Solution Files(所有解决方案文件)

这是 SWEA 工具窗口的新首页。 在这里,您可以看到解决方案级错误分析在整个解决方案中发现的所有错误。

新的 Bookmarks(书签)工具窗口

我们引入了新的 Bookmarks(书签)工具窗口,取代与其类似的 Favorites(收藏夹)实例。

添加书签时,Rider 默认会将其置于 Bookmarks(书签)工具窗口下以项目命名的节点中。 每次添加新书签,它都会出现在此节点内的列表顶部。 您还可以创建新节点并在其中拖放条目。

调试器

Debug(调试)标签页的新 UI

Debug(调试)标签页获得全新 UI! 我们有很多更改要谈。

默认提供三个标签页:Threads & Variables(线程和变量)、Console(控制台)和 Debug Output(调试输出)。 Memory(内存)和 Parallel Stacks(并行堆栈)等其他标签页已被隐藏,但您可以通过 Options Menu(选项菜单)(最右侧的齿轮图标)显示它们。

我们完全移除了左侧工具栏,并将其中的图标移动到顶部工具栏或上下文菜单。 为了使顶部工具栏尽可能紧凑,我们重新排列了图标集,只显示最重要的操作。 其余图标被移至 More(更多)下拉菜单(竖点图标)。 Hide Frames from Libraries(从库中隐藏框架)图标和 Hide/Show Threads(隐藏/显示线程)开关已被移至 Threads(线程)视图中的上下文菜单。

More(更多)下拉菜单新增了 Settings(设置)子菜单。 您可以在这里找到最常见调试器相关设置的候选列表,不必再转到 Settings/Preferences(设置/偏好设置)对话框和 Build, Execution, Deployment | Debugger(构建、执行、部署 | 调试器)页面进行搜索。

Immediate(即时)窗口的更新

布局分为两种:最大化和最小化。 在最小化布局中,Variables(变量)视图只显示 $result 变量中的执行结果。 在最大化布局中,除了 $result 变量外,您还可以查看先前执行的行的历史记录及其结果。 您可以使用 Expand/Collapse(展开/收起)图标切换布局。

Add Watch(添加监视)已从 Variables(变量)视图移动到 Immediate(即时)窗口工具栏,并新增了 Ctrl+Shift+Enter 快捷键。

新的 Stop on Breakpoints(在断点处停止)选项会强制评估进程在执行表达式时在断点处停止。 禁用此选项将使评估进程忽略断点。

为了使属性较多的对象更易于评估,我们添加了 Evaluate(评估)图标,可以打开 Evaluate(评估)窗口(此对象已评估)。 在该窗口中能够以树形式更轻松地查看对象属性。

UWP 应用的调试

给 UWP 开发者带来的好消息:您可以立即启动附有调试器的 UWP 项目。 您不再需要先运行项目,然后手动将调试器附加到正在运行的进程。

对 Windows Docker 容器的支持

您可以在本地 Windows Docker 容器中调试 .NET (Core) 和 .NET Framework 应用。 此前,调试器只能在 Linux Docker 容器中调试 .NET Core 应用。

其他更新

创建标准委托时(System.FuncSystem.Action),您可以轻松导航到委托将包装的方法或 lambda 表达式。 点击 Navigate(导航)链接可以转到 Variables(变量)列表中的委托节点。

使用 lambda 表达式创建 event handler (delegate) 时,新的可视化器允许您更细致地调查订阅者和捕获的对象。

事件处理程序获得了带有 Captured variables(捕获的变量)子节点的 Subscribers(订阅者)节点。 为了快速导航到订阅事件的位置,我们为各订阅者添加了一个新的 Navigate(导航)链接。

代码分析

C# 10

Rider 继续添加更多 C# 10 功能。 今天,我们正式添加对文件范围命名空间、global using、CallerArgumentExpression 特性、“插值字符串处理程序”概念和 C# 10 lambda 的支持。

首先是文件范围命名空间。 除了支持新语法,我们还添加了一个新的 Syntax style(语法样式)选项,允许您选择需要的样式(Settings/Preferences | Editor | Code Style | C# | Syntax Style | Code body | Namespaces(设置/偏好设置 | 编辑器 | 代码样式 | C# | 语法样式 | 代码正文 | 命名空间))。 选择样式时,Rider 将在检查中显示为遵循样式而必须更改的代码,并建议相应的快速修复。 您可以一键对项目甚至整个解决方案传播修正。

有两个上下文操作允许您将代码返回到以前的语法样式:Convert to file-scoped namespace(转换为文件范围命名空间)和 Convert to block-scoped namespace(转换为块范围命名空间)。

了解详情:文件范围命名空间

现在,我们来快速浏览一下 global using。 Rider 代码分析能够理解 global 关键字标记的 using,并使用它们正确解析项目中所有代码文件中的符号。 Rider 还会通知您 global using 是否被放置在文件中的错误位置。

Rider 会将在项目中没有使用的 global using 高亮显示为未使用,并提供移除语句的快速修复。

Rider 为 CallerArgumentExpression 特性带来了丰富的支持,包括代码补全和代码检查,帮助您正确使用。

了解详情:CallerArgumentExpression

C# 10 引入了“插值字符串处理程序”的新概念。 对于最终用户来说,这意味着字符串插值表达式在 .NET 6 中的运作速度整体提升,并且新的处理程序还可以让 Span<char> 值能够在插值孔中使用。 对于库作者,此功能允许其控制是否将字符串插值表达式转换为字符串。 Rider 2021.3 能够识别库代码中的“插值字符串处理程序”模式,可以在更多位置安全地建议使用字符串插值表达式。

Rider 会建议您将 record 结构标记为 readonly,以此帮助您从这些结构中获得最佳性能。 为避免不必要地使用修饰符混淆类型声明,仅当 record 类型具有非变异实例成员并且解决方案中没有通过 setter 的变异时才显示此检查(需要启用解决方案级分析)。

C# 10 允许您以点访问替换对象模式嵌套,从而略微简化模式匹配语法。

Rider 提供带有快速修复的相应检查,以及撤消快速修复的上下文操作。

最后但同样重要的更新:

  • 我们改进了对 C# 10 lambda 的支持:在 .NET 6 Minimal API 项目中预计不会出现红色代码或误报错误。 此外,Rider 还可以帮助您使用正确的语法并在编译器期望的位置添加圆括号。
  • Rider 现在支持使用 Program 作为具有顶级语句的代码的有效生成类名称。
  • 对接口中 static abstract 成员的初始支持现已可用。 代码分析认为这种结构有效,这意味着您不再需要处理红色代码。 Generate missing members(生成缺失成员)功能可发现和正确处理 static abstract 成员。 此版本还包括继承装订区域标记和导航到基础/派生符号的功能。

可空引用类型

人们时常会从其他资源(如 stackoverflow.com)复制代码片段。 如今,随着可空引用类型在 C# 中可用,一些代码示例已经包含 NRT 语法。 但是,如果您的解决方案中没有启用 NRT,该怎么办? Rider 新增了两项快速修复,可帮助您在将此类代码粘贴到项目后摆脱这种语法:Replace with JetBrains.Annotations attributes(替换为 JetBrains.Annotations 特性)和 Remove nullable annotations without ‘#nullable’ context(移除没有 ‘#nullable’ 上下文的可空注解)。

有时,类型实参与其可空性约束之间可能存在可空性不匹配。 现在有了针对此类情况的快速修复,包括:

  • 从类型实参中移除可空注解。
  • 从类型实参中移除 notnull 约束。
  • 在类型形参中允许可空值。
  • 禁止在用作类型实参的类型形参中使用可空值。

可以使用一个批量快速修复在文件、项目或整个解决方案中更正具有可空默认值的形参的注解。

还有一个新的批量快速修复,可在方法中的形参被确认为空时使形参可空。

C# 代码分析

我们为带有闭包的 static 局部/匿名函数添加了几个新的快速修复和一个上下文操作:

  • Allow closures(允许闭包)快速修复可以从包含闭包的局部或匿名函数中移除 static 修饰符。
  • Pass closure as a parameter(将闭包作为形参传递)快速修复可以将静态局部函数中的闭包提升为形参。
  • Pass closure as a parameter(将闭包作为形参传递)上下文操作可以将非静态局部函数中的闭包提升为形参。

新的检查 Simplify string interpolation(简化字符串插值)带有相应的快速修复,可以将 .PadLeft().PadRight() 方法调用替换为插值字符串占位符内的对齐表达式 。

除了添加新的 C# 10 record struct 之外,我们还改进了对常规结构的支持。 许多开发者仍然为 DTO 使用带有对象初始值设定项的类。 现在,您可以快速将所有用法转换为带形参的构造函数。 这可以通过 record 声明本身或任何对象初始值设定项完成。 请注意,定义具有属性分配的构造函数的 DTO 也可转换。

一段时间以来,Rider 已经能够就字段上的不一致锁定向您发出警告。 在这个版本中,我们添加了一个补充检查,它还能考虑到多个锁定资源的顺序,通知您可能的死锁周期。

Rider 现在会检查其他整数类型的积分算术表达式的合理性,包括 bytesbyteshortushortuintlongulongenum。 这有助于您避免不可到达的代码分支。

代码分析性能

为文件夹、项目或解决方案调用快速修复和上下文操作时,我们减少了实现快速修复和上下文操作所需的时间。

如果 Solution-Wide Error Analysis (SWEA)(解决方案级错误分析)与 Monitor warnings(监视警告)一同启用,Rider 将使用 SWEA 结果跳过没有相应问题的文件,大幅减少查找待修正问题所花费的时间。

我们也为没有在解决方案上运行 SWEA 的用户带来了好消息! Rider 现在将利用所有可用的 CPU 核心并行运行代码分析。 这在总体上减少了执行范围快速修复和上下文操作所需的时间。

 

对于包含大量方法的文件,我们显著提高了守护程序的性能,例如:

  • 具有大型或嵌套条件表达式、元组表达式或 switch 表达式的方法。
  • 禁用可空引用类型且具有大量类型检查的方法。
  • 启用可空引用类型且具有大量索引器访问的方法。
  • 启用可空引用类型且具有大量闭包的方法。

SQL 语言注入

我们改进了对 SQL 语言注入的支持。 我们现在支持直接在 C# 代码中编写 SQL 代码的许多常见情况。

可为 string.Format 方法、字符串插值和简单的字符串串联正确解析 SQL 查询字符串。

当 SQL 查询字符串中形参的 SQLParameter 变量与 Microsoft SQL Server 方言或 Dapper 库一起使用时,不再发生错误。

游戏相关

Unity

此版本为 Rider 对程序集定义文件的支持带来了重大更新。 您可以使用 Ctrl+Click 导航到引用;在整个项目甚至引用的软件包中查找程序集定义的用法;重命名程序集定义;并在添加新引用时获得补全。

Rider 还将支持基于 GUID 的引用,显示带有目标程序集定义名称的实用提示,可通过 Alt+Enter 操作在命名引用和基于 GUID 的引用之间转换。

Rider 现在将在程序集定义文件中高亮显示未满足的 define constraints(定义约束)。 这可以清楚显示程序集被排除在外的原因。 您甚至可以补全 define 符号!

version defines (版本定义)设置也更容易,包括软件包名的补全和当前安装版本的嵌入提示。 如果条件不满足,Rider 也会高亮显示该符号。

Rider 将在特殊上下文中显示来自引用的 Unity 软件包的源文件,并提供有关编译软件包时定义的符号的信息。 这意味着显示源文件时将高亮显示正确的预处理器分支。

Unity 的 [Tooltip] 特性提供了 Inspector 在编辑字段时可以显示的文本。 无论您在何处使用序列化字段,Rider 都会将此文本显示为 Quick Documentation(快速文档)弹出窗口的一部分。 新增的上下文操作可用于从或向 XML 文档创建工具提示。

Rider 对通过 USB 在 iOS 设备上调试的支持已更新为可与 Apple 芯片配合使用,此版本还增加了对 Linux 的支持。

资产索引现在会在引用的软件包中查找,这意味着 Rider 可以根据软件包中的资产找到代码在预制件中的用法。

元文件跟踪经过完全重写已可处理更多用例。 在 Unity Explorer 工具窗口中添加、移除、重命名、移动或重构文件时,它可以无缝运作。

此版本还提供了一系列常规修正,例如在文件被某类外部应用更新时更新资产索引、在 Apple 芯片上从 Unity 打开文件,以及更新 Burst 分析以匹配 Burst 编译器中的更改。 我们还改进了 Rider 在搜索已安装的 Unity 版本和更新 Unity 日志查看器工具窗口时的性能。

Unreal Engine 早期预览

Unreal Engine 测试

使用 Unreal Engine 测试框架向游戏添加测试时,Rider 现在可以启动测试并在 Unit Test(单元测试)工具窗口中显示测试结果。 在此工具窗口中,您可以查看测试结果并重新运行任何测试,包括特定测试、失败的测试或所有测试。 您还可以通过传递的标志对测试进行分组。

了解详情

Rider for Unreal Engine 正在从公开预览迈向最终发布。 目前,这仍然是独立的 Rider 构建免费预览,可在提交表单后使用。

框架

WPF

XAML 预览现在适用于面向 .NET 6、.NET 5 和 .NET Core 3.x SDK 的应用程序。 您可以直接在 Rider 中预览对 XAML 代码所做更改的结果。

Xamarin

  • Plist 编辑器中,我们实现了对标准 Xcode 方案的支持。 这可以帮助 Rider 提供键的友好名称、根据键类型进行值验证以及在您向 plist 添加新键时提供一列可能的键。 这些方案适用于 macOS 和 Windows。
  • 您现在可以直接从编辑器以 NuGet 软件包形式下载 Android 组件。
  • 对 AndroidX 库的支持可用于支持它们的项目。
  • 我们改进了 Android 编辑器布局。

代码清理、格式设置和代码样式

Reformat and Cleanup on Save(保存时重新格式化和清理)

我们引入了 Reformat and Cleanup on Save(保存时重新格式化和清理)设置。 此功能允许您在 IDE 中显式调用 Save(保存)或 Save All(全部保存)时重新格式化和整理代码。 保存的所有隐式触发器,例如构建、切换到另一个标签页和提交,都不会导致代码重新格式化。 Rider 会将修改后的文档添加到要在下一次显式保存时清理和重新格式化的内部文件列表。 我们希望这一功能将帮助您确保代码整洁。

要启用和调整此设置,请转到 Preferences/Settings | Tools | Actions on Save(偏好设置/设置 | 工具 | 保存时的操作)。 在这里,您可以选择将使用的清理配置文件。 可用配置文件的列表继承自 Preferences/Settings | Editor | Code Cleanup(偏好设置/设置 | 编辑 | 代码清理)页面。 您还可以指定该操作是应用于整个文件还是仅应用于更改的行。

此外,Reformat and Cleanup on Save(保存时重新格式化和清理)功能遵循 Do not format(不格式化)设置。 要指定应从格式设置中排除的文件和目录,请使用 Preferences/Settings | Editor | Code Style | Formatter(偏好设置/设置 | 编辑器 | 代码样式 | 格式化程序)标签页。

其他改进

Reformat and Cleanup(重新格式化和清理)功能适用于 Solution Explorer(解决方案资源管理器)工具窗口中的多个所选文件和目录。

我们为格式化程序添加了新选项:

  • 用于在语句条件内缩进 lambda 或属性模式大括号的选项,例如在 if()while() 内。
  • 用于在 if()foreach() 等的圆括号内对齐语句条件的选项。 此选项默认情况下处于开启状态。
  • 用于包装、切割、对齐和减少二进制模式的选项,例如,x is Foo or Bar or Baz

从 .NET 5 SDK 开始,您可以使用全局 AnalyzerConfig 文件配置 Visual Studio 分析器选项。 Rider 2021.3 可以从这些全局 AnalyzerConfig 文件中读取代码样式信息,并相应地调整 Rider 规则。

Web 开发

用于更新依赖项的新检查

Rider 2021.3 允许您直接从编辑器将 npm 软件包更新到最新版本! 打开 package.json 文件,将文本光标放在要更新的软件包版本上,按 Alt+Enter,然后选择 Update ‘package name’ to the latest version(将“软件包名称”更新到最新版本)。 将鼠标悬停在软件包版本上时,还会显示快速修复。 有关此检查背后的原因,请参阅这篇博文

改进了 HTML 代码补全

我们改进了代码补全在 HTML 中的工作方式。 每当您在编辑器中输入标记名称或缩写或调用代码补全,Rider 都会立即显示相关建议。 先前,只有首先输入 < 才会显示。 此外,字符实体引用的代码补全现在也可以更好地工作。

NuGet 支持

Rider 可为 .NET Framework 项目中的 NuGet 软件包生成绑定重定向。 如果项目中需要绑定重定向,Rider 会将其添加到 App.configWeb.config 文件中。

绑定重定向在安装或更新 NuGet 软件包时生成。 但是,您随时可以前往 Solution Explorer(解决方案资源管理器)工具窗口的项目上下文菜单,通过 Tools | Generate Binding Redirects(工具 | 生成绑定重定向)让 Rider 手动生成绑定重定向

在项目 Properties(属性)页面的 Applications(应用程序)标签页中,新增了属性 Auto-Generate Binding Redirects(自动生成绑定重定向)。 如果 App.config 文件中没有重定向,它会要求 MSBuild 在构建项目时生成绑定重定向

除了添加对绑定重定向的支持之外,我们还实现了一个小的用户体验改进。 您现在可以直接从 Solution Explorer(解决方案资源管理器)工具窗口卸载 NuGet 软件包。

对 Apple 芯片的支持

从这个版本开始,Rider 可以原生在配备 Apple 芯片处理器的 Mac 计算机上运行。 Rider 2021.3 使用以下运行时:

  • 前端为与 Apple 芯片兼容的 JetBrains Runtime。
  • 后端为 .NET6 RTM

不再需要 x64 到 ARM64 的转换! Rider 能够在 Apple 芯片上超快运行!

F# 支持

重磅消息:Rider 现在正式支持 F#6! 在此版本中,您还会发现许多针对代码补全、重构和导航的优质更新,以及对 F# 语言支持的多项改进。

Introduce Variable(引入变量)重构获得了一些强大更新。 它现在会根据需要建议您解构元组和单例 union 类型,还会建议在计算表达式中使用计算类型。 此外,它也将在适用时建议使用 useuse! 关键字。同时,我们改进了添加绑定的位置。

此版本包含许多代码补全更新,包括更好的建议顺序和基于上下文的初始关键字筛选(部分关键字在不适用时不再显示)。 以递归方式使用 F# 函数更简单,因为您不必返回并手动将 rec 添加到包含函数。

代码补全还有另一个值得注意的更新。 在补全联合用例模式时,Rider 会建议您对其字段使用模式匹配。

Find Usages(查找用法)结果中的新图标将帮助您区分调用、部分应用程序、模式和其他用法类型。

Rider 现在允许您在插值字符串中正确扩展选择。 Special thanks to Andrew Rublyov for this contribution! _ 和不同中括号类型的选择行为也得到了改进。

我们在 F# 支持中实现了许多小型快速修复、重构和其他改进。 Please take a look at the full release notes for more information.

插件

dotCover
dotUltimate

新增了 Code Vision 指标:Covering tests(覆盖测试)。 如果 Rider 具有项目的覆盖信息,并且方法(或属性、索引器或事件)至少被一个测试覆盖,则此指标将显示。

可以从 Settings/Preferences | Editor | Code Vision(设置/偏好设置 | 编辑器 | Code Vision)页面启用或禁用该指标。

您可以点击代码编辑器左侧的覆盖行,在出现的弹出窗口中启动单元测试。

dotTrace
dotUltimate

dotTrace 插件可让您收集有关 macOS 和 Linux 上异步调用的数据。 要获取此数据,请使用 Timeline(时间线)分析模式。 Call Tree(调用树)显示异步调用,包括 awaitscontinuations

dotTrace 插件可以在 Timeline(时间线)分析模式下分析 macOS 和 Linux 上应用程序的子进程。 此支持仅适用于 .NET 5+ 应用程序。

导航和 Find Usages(查找用法)

新的装订区域标记

我们添加了更多的装订区域标记,帮助您快速浏览类、接口或结构的继承结构。 新的 ↑O↑I 图标分别表示代码实体继承或实现了另一个类或接口。 如果代码实体的继承很复杂,选择图标后将显示一个菜单,其中列出了上方的所有上级,直至继承层次结构顶部。 如果一个类同时实现或继承了一个接口和一个类,Rider 会在装订区域中显示一个 ↑IO 图标。

此外,在此版本中,我们默认为类成员启用了装订区域标记。 如果类成员在派生类中被重写,Rider 将在类成员旁边的左侧装订区域中添加 ↓O 图标。 点击图标将:

  • 导航到派生类中重写此成员的成员。
  • 向您显示一个菜单,其中包含来自其他类的重写此成员的类成员列表。

用户定义的隐式转换 operators 的 Find Usages(查找用法)

现在,您可以为用户定义的隐式转换 operators 调用 Find Usages(查找用法)! 此功能的实现基于用于类型转换提示的机制。

这可以让您查明是否完全使用了用户定义的隐式转换 operators,然后导航到带有转换的代码块。

请注意,此算法并不快,计算和显示结果可能需要相当长的时间。

数据库支持

数据编辑器聚合

我们增加了显示一系列单元的 Aggregate(聚合)视图的功能。 这是一项备受期待的功能,可帮助您管理数据并免除编写额外查询的需求! 这使数据编辑器更强大、更易用,也更接近 Excel 和 Google 电子表格。

选择要查看视图的单元范围,然后点击鼠标右键并选择 Show Aggregate View(显示聚合视图)。

映射 DDL 数据源和真实数据源

上一版本引入了基于真实数据源生成 DDL 数据源的功能,此版本是其逻辑延续。 现在,此工作流已获得完全支持。 您可以:

  • 从真实数据源生成 DDL 数据源:参阅 DataGrip 2021.2 公告
  • 将 DDL 数据源映射到真实数据源。
  • 在两个方向上比较和同步。

请注意,DDL 数据源是一种虚拟数据源,其架构基于一组 SQL 脚本。 将这些文件存储在版本控制系统中即可将数据库保留在 VCS 下。

数据配置属性中新增了 DDL mappings(DDL 映射)标签页,用于定义映射到各 DDL 数据源的真实数据源。

新的数据库差异窗口

上下文菜单提供了新的 Database Diff(数据库差异)窗口。 它具有更好的 UI,并且在右侧窗格中清楚显示了执行同步后您将获得的结果。

右侧窗格中的图例显示了不同颜色潜在结果的含义:

  • 绿色和斜体:对象将被创建。
  • 灰色:对象将被删除。
  • 蓝色:对象将被更改。

Script preview(脚本预览)标签页显示结果脚本,可在新控制台中打开或从此对话框运行。 此脚本的结果是应用更改,使右侧数据库(目标)成为左侧数据库(源)的副本。

除了 Script preview(脚本预览)标签页,底部窗格中还有两个标签页:Object Properties Diff(对象属性差异)和 DDL Diff(DDL 差异)。 它们显示源数据库和目标数据库中对象的特定版本之间的差异。

其他

项目属性

此版本为 Project Properties(项目属性)对话框带来多项新设置:

  • 您可以在 Application(应用程序)页面的 Resources(资源)部分自定义应用程序图标。
  • 新增的 Build Events(构建事件)页面可用于指定在构建之前和之后运行的命令。
  • Inspections(检查)页面新增了与代码分析相关的项目属性:Localizable(可本地化)、Localizable inspector(可本地化检查器)和 Solution-Wide inspections(解决方案级检查)。
  • 您可以在 Reference Paths(引用路径)页面为项目配置引用路径。
  • Applications(应用程序)标签页中,新增了属性 Auto-Generate Binding Redirects(自动生成绑定重定向)。 查看前文 NuGet 支持部分详细了解绑定重定向

Solution Properties(解决方案属性)

Solution Properties(解决方案属性)对话框中的表新增了 Dependencies(依赖项)列,用于指定各项目的构建依赖项。 为防止循环依赖项,部分项目被禁止选择。

运行配置

从 2021.3 开始,Rider 将在项目加载时从 Properties/PublishProfiles 导入所有 .pubxml 文件并将其转换为运行配置。 每次添加新的 .pubxml 文件,都会自动生成新的运行配置。 您不再需要手动创建这些运行配置!

新增的显式运行时选择器可用于指定运行应用程序的运行时。 列表取决于您使用的操作系统,但完整列表包含:.NET/.NET Core.NET FrameworkMono

在代码补全中对 EditorBrowsable 特性的支持

您现在可以调整代码补全列表,根据 EditorBrowsable 特性筛选条目。 在 Preferences | Editor | General | Code Completion(偏好设置 | 编辑器 | 常规 | 代码补全)页面的 Filter members by EditorBrowsable attribute(按 EditorBrowsable 特性筛选成员)下选择所需行为。

更改所有标签页的字体大小

我们根据用户请求做出了更新,支持在 macOS 上使用 + 鼠标滚轮或在 Windows 和 Linux 上使用 Ctrl + 鼠标滚轮同时更改所有打开的标签页的字体大小。 要启用此功能,首先转到 Preferences / Settings | Editor | General(偏好设置 / 设置 | 编辑器 | 常规),选择 Change font size with Command + Mouse Wheel in(使用 Command + 鼠标滚轮更改字体大小),然后选择 All editors(所有编辑器)。 如果选择 Active editor(有效编辑器),则快捷键将仅在您当前处理的文件中更改字体大小。