Rider 最新变化

Rider 2021.2 增强了对 C# 语言的支持,包括涉及代码分析、可空引用类型和源生成器的大量更新。 对于 Web 开发者,此版本提供了 ASP.NET Core Endpoints 支持和 Blazor WebAssembly 应用程序客户端调试。 使用 Unity 和 Unreal Engine 的游戏开发者也将获得大量更新。 现在,Welcome 向导允许您从其他 IDE(例如 Visual Studio、VS for Mac 或 Visual Studio Code)导入设置。

ASP.NET Core Endpoints 支持

新的 Endpoints 工具窗口可帮助您浏览和导航到项目中以 [Route][Http{Method}][AcceptVerbs] 特性注册或注解的任何 ASP.NET Core 端点。

检查端点文档,或对实现端点的控制器执行 Jump to Source。 通过 Find Usages 查看其注册位置。

使用 HTTP Client 标签页创建请求并提交至应用程序。 这非常适于测试 API。

使用捆绑的 OpenAPI Specifications 插件试用 API。 它为 OpenAPI 文件添加了 Swagger UI 支持,可用于编写请求和检查响应。

在代码编辑器中,您也将获得一流支持:

  • 使用 HttpClient 时,代码补全将建议在使用 [Route][Http{Method}][AcceptVerbs] 特性注解的控制器中可以解析为操作的所有 URI。
  • 您可以使用 Go to DeclarationFind Usages 在控制器内的路由特性和这些 URI 之间轻松导航。
  • 重命名控制器中的特性路由会影响其在 URI 中的使用,您甚至可以直接从 URI 字符串重命名路由。

Blazor WebAssembly 调试

备受期待的 Blazor WebAssembly 客户端调试现已加入 Rider! 适用于 .NET 5.0 和 .NET Core 3.1 应用程序。

Follow the official Microsoft guide to set up WASM debugging. 然后像往常一样开始调试您的应用程序。

要使其在 Linux 上运行,您必须事先手动安装开发证书;否则它将无法工作。 If you are using Ubuntu, you can follow this guide.

Rider supports the debugging proxy if either of these NuGet packages are installed: Microsoft.AspNetCore.Components.WebAssembly.DevServer or Microsoft.AspNetCore.Components.WebAssembly.Server. 我们尚不支持 Blazor WASM 应用的自定义调试代理。

语言支持

C# 代码分析

您是否使用临时变量来交换变量值? 现在有一种更优雅的方式可以执行此操作! Rider 2021.2 可以通过新的 Swap via deconstruction 快速修复帮助您对代码进行现代化改造!

减少代码中的分配数量,并增加吞吐量! 使用 Array.Empty<T> 替换空数组创建

如果您正在分配新的 Type[0],Rider 将建议使用 Type.EmptyTypes 以使内存使用更高效。

如果不需要特定的 EventArgs,Rider 可以使用 EventArgs.Empty 替换 new EventArgs()

其他改进:

  • 使用 .editorconfig 中的 generated_code 属性,可将文件或文件夹标记为生成的代码并将其排除在处理范围之外。
  • 对于具有许多局部函数和闭包的成员,代码分析的速度现在更快。
  • 对于大型和复杂的 switch 语句和 switch 表达式,享受 Find similar issues 和代码分析的性能改进。

可空引用类型 (NRT)

在启用可空引用类型之后您在代码库中是否具有许多可空警告禁止?

Rider 会指示不再需要且可以安全移除的禁止 (!)。

一个新的上下文操作,可用于在范围内搜索所有可空警告禁止。 在 Find Results 工具窗口中,可以重新评估是否需要禁止。

我们引入了一个新的重构来更改可空性。 可通过快速修复、通过 Refactor This 操作,或在添加或移除可空注解 (?) 时通过就地重构使用这个新重构。

Rider 将更新可空性注解,并建议在整个代码库中传播更改。

使用 JetBrains.Annotations 特性并启用可空引用类型时,可以使用多种具有相应快速修复的新检查。

JetBrains.Annotations 特性更新为 NRT 语法和编译器支持的特性! 例如,Rider 可以将 [CanBeNull] string 更新为 string?

Rider 将通知您冗余 JetBrains.Annotations 特性,例如 [NotNull] string[ItemCanBeNull] List<string?>。 当然,它将提供快速修复来更新您的代码。

不允许类型注解语法时,具有快速修复的新检查会添加编译器支持的注解,例如:

  • [JetBrains.Annotations.NotNull] T param 添加至 [DisallowNull] T param (where T: class?)
  • [JetBrains.Annotations.CanBeNull] T 添加至 [System.Diagnostics.MaybeNull] T(在 C# 8 中,不允许 T? 语法)

Rider 增加了新的检查和快速修复来帮助您使用编译器支持的注解,例如 [DisallowNull][AllowNull][MaybeNull][NotNull]

新的检查会检测冗余编译器注解,例如在将 [AllowNull] 应用于可空类型并且快速修复将其移除时。

在可以使用可空引用类型语法时,Rider 将建议执行此操作。

还有一些其他改进也值得一提:

  • Rider 会检查变量是否需要可空并在可能的情况下生成更严格的类型。
  • 许多上下文操作、快速修复和后缀模板已更新,可更好地与可空警告禁止结合使用。 如果原始代码禁止了警告,它们会保留可空警告禁止或为引入的代码生成它们。
  • 我们改进了对将泛型与可空引用类型结合使用的支持。

源生成器支持

源生成器可用于减少繁琐、重复的开发工作,并在编译时生成代码。 在 Rider 2021.2 中,许多可用于手动编写的代码文件的功能也可用于源代码生成的文件。 我们改进了编辑器支持并增加了对重构的支持。

现在,可以通过源代码生成的文件触发重构。 使用 Rename 重构可重命名生成的属性。 Rider 还将重命名手动编写的代码中的相关符号!

同样,Change Signature 可用于验证在更改后生成的代码是否仍可编译。

现在,您可以使用 Find Usages,搜索继承者,通过 Ctrl+点击Navigate To 从生成的代码导航到手动编写的代码等。

已启用语义高亮显示,以便正确高亮显示事件、字段和属性等类成员。 在适当的位置显示所有嵌入提示

对于生成的代码,警告和错误会显示在编辑器中和标记栏上。

Rider 现在也支持由 VB.NET 中的源生成器生成的代码。

游戏相关

Rider 2021.2 向成为一流游戏开发 IDE 的目标持续迈进,为 Unity 提供新功能,并对早期预览 Unreal Engine 支持做出突破性改进! 如果您使用的是 Godot,请务必尝试适用于 Rider 的 Godot Support 插件。

Unity 支持

Rider 与 Unity 编辑器的智能集成现在将在您提交代码之前检查是否存在打开和未保存的场景。 这可以确保您在提交之前保存所有内容!

Rider 长期以来一直在 Unity 类或方法的工具提示中显示 Unity 文档的链接,但现在您可以使用 External Documentation 操作和快捷键直接跳转到文档,无需先查看工具提示。

Rider 现在可以调试本地 UWP 播放器,正确地要求 Windows 允许正在调试的进程的传入连接。

现在,当解决方案被重新打开时,Unity Explorer 中 Packages 视图的显示速度明显加快,还会记住打开的文件夹。

此版本改进了基于 IL2CPP 的播放器的调试体验,连接到 IL2CPP 播放器时自动禁用Break on Unhandled Exception

与以往一样,还有许多其他小的改进和修正;例如,[UnitySetup] 方法不再被标记为未使用,并且在完成旧项目时正确显示层名。 基于 Unity 的检查获得多种性能改进,尤其是大文件的检查。

Unreal Engine 早期预览

Rider for Unreal Engine 正在从公开预览迈向最终发布。 以下是我们自 2021.1 版以来推进的工作。这是一个相当长的列表!

Unreal Engine 5 支持! 您没看错:Rider for Unreal 与新的 Unreal Engine 5 项目配合得很好,和处理现有 Unreal Engine 4 项目相同。

打开的 .uproject 文件支持! 没错,Rider 可以直接从 <项目名称>.uproject 文件中打开您的 Unreal Engine 项目,不再需要生成 Visual Studio 解决方案文件。

Unreal Engine Rider 现已登陆 Mac! 在 macOS 上打开 <项目名称>.uproject 文件,感受完整的 Rider for Unreal 体验。 这包括大量的 C++ 和 HLSL 着色器编辑、导航、检查与重构、代码样式设置与快速修复、Blueprint 支持(Blueprint 中代码的 Find Usages、Code Vision 链接和计数器与导航),以及调试器和与 Unreal Editor 的丰富集成。 macOS 版本适用于 Unreal Engine 4.26 或更高版本。

Natvis 的重大改进和调试器结果的内置演示。 为可继承特性、格式说明符、自定义列表条目等对象提供支持,包括 Natvis 未涵盖的所有结构的单行摘要,以及用于查看底层对象数据的 [Raw View] 节点。

Expanded Code Style 设置。 Rider 将识别 Unreal 项目,自动配置以理解并遵循 UE 代码样式约定。 它将高亮显示不遵循正确样式的代码并提供快速修复来自动更新代码。

最后,EzArgs 插件提供了对 C++ 运行/调试配置参数的轻松访问,只需在工具栏的下拉菜单中键入新参数即可。

代码清理

我们已将 Reformat FileCode Cleanup 对话框合二为一。 两者的快捷键保持不变,但您将拥有一个新的统一视图,可同时执行两个步骤。 清理配置文件还将预览待执行操作,您可以通过一个按钮轻松切换到配置文件编辑模式。

在提交对话框中,您现在可以使用选择的配置文件对更改启用自动代码清理。 另外,您还可以使用 Reformat and Cleanup 对话框中的新选项重新格式化/清理当前文件中的未提交更改。

重新设置代码格式、优化导入和重新排列代码的操作现在可用于 CSS、JavaScript 和 SQL。 您可以在 Settings | Editor | Code Cleanup 下微调规则。

用户体验

从其他 IDE 导入设置

您是第一次使用 Rider 吗? 如果您以前从未安装或使用过 Rider,Welcome 向导现在允许您从其他 IDE(例如 Visual Studio、Visual Studio for Mac 或 Visual Studio Code)导入设置。 此外,Rider 可以识别来自 ReSharper 的设置。

从其他 IDE 导入设置的运作方式了解详情。

以拖放方式组织工具窗口

现在可以更轻松地将工具窗口拖放到主 IDE 窗口的所需位置或单独的窗口中。 您可以点击并按住工具窗口名称栏将其拖放到任何高亮显示的位置。

透明标题栏 仅限 macOS

当 IDE 窗口未处于全屏模式时,标题栏现在在 macOS 上是透明的。 这意味着标题栏和窗口的其余部分之间没有可见的边框。

高级设置

如果您需要在 Rider 中配置特定于用例的选项,可以前往 Preferences/Settings 中的新 Advanced Settings 节点。 例如,您可以在 Distraction-free 模式下添加左边距,或者在使用 Comment with Line Comment 操作后将文本光标设置为向下移动。

Preferences/Settings 中的新导航选项

我们简化了 Preferences/Settings 中的导航,在窗口右上角增加了箭头。 允许您在打开的部分之间快速跳转。

调试器

属性值默认在调试器中评估和显示,而评估偶尔可能需要较长时间。 因此我们添加了一个新的 Disable Evaluation of Selected Item 操作。

特别是对于原生代码,评估方法调用可能会导致调试会话崩溃。 Rider 会记住这些麻烦的调用并为您禁用其评估。

逐步执行代码库时,每个新文件都会在新标签页中打开,有时会留下一个非常混乱的标签页栏。 预览标签页可以为此提供帮助! 它允许您从单个标签页中逐一查看文件,无需每次都在新标签页中打开文件。 您可以在 Settings/Preferences | General | Editor Tabs | Opening Policy 中启用。

版本控制

更改列表

很长时间以来,Rider 一直使用 Default Changelist 作为存储所有未提交更改的节点的名称。 在此版本中,我们决定改用 Changes 一词使措辞更加精确。 此更新将影响您的新项目。

Rider 将不再为 Git 操作自动添加更改列表。 因此,举例来说,cherry-pick 不会触发更改列表创建。

但是,如果您仍然更喜欢自动创建而不是新的行为,您可以在 Preferences/Settings | Version Control | Changelists 中勾选 Create changelists automatically 复选框激活前者。

Local History 修订中的文本搜索

我们在 Local History 对话框中添加了一个搜索字段,帮助您快速找到 Local History 修订中的必要文本。 现在,当您右键点击已更改的文件并在上下文菜单中选择 Local History | Show History 时,您可以在此字段中键入查询来快速浏览文件历史。

GPG 签名

现在可以通过 Preferences/Settings | Version Control | Git 启用使用 GPG 签署 Git 提交。 如果您是第一次使用 GPG 密钥,则首先需要进行配置。 使用现有的预配置 GPG 密钥,只需从下拉菜单列表中选择。

提高了受支持的最低 Git 版本

现在,您的 IDE 支持的最旧的 Git 版本为 2.17。 我们提高了支持的最低版本,因为 2.17 为仍能接收安全更新的最旧版本。

编辑器

结构化移除

我们实现了代码的结构化移除。选择和删除具有任何类型结构化选择(例如结构化导航、扩展/收缩选区或重新排列代码)的代码,并让 Rider 执行剩余的结构化修改。 您可以移除方法调用参数的逗号和冒号、特性参数中的圆括号或空对象初始值设定项的大括号。

快速文档

我们更新了快速文档的显示方式。 特性现在高亮显示,更易于阅读和探索。 在检查使用泛型的类或方法时,Rider 将不再呈现占位符值,而是显示具体实现。

格式化

如果您更喜欢使用 Pico 大括号(缩进)样式,我们帮您搞定。 Pico 样式已作为选项添加到 Preferences/Settings | Editor | Code Style | C# | Braces Layout 页面上的 Brace Layout 标签页。

前端开发

保存时在浏览器中重新加载页面

如果您在浏览器中预览 HTML 文件,它们将根据 HTML 文件或链接的 CSS 和 JavaScript 文件中保存的更改自动更新。 此功能默认启用。

React useState 钩子的 Rename 重构

您将不再需要浪费时间逐一重构 useState 值和函数 – Rider 现在可以为您对这二者进行重命名! 将文本光标置于状态值上并按 Shift+F6 键或转到右键点击上下文菜单中的 Refactor | Rename

require() 自动导入

您知道 Rider 可以在您补全 ES6 符号时添加缺少的 import 语句吗? 现在,它可以对 CommonJS 模块实现相同功能 – 支持在代码补全时插入 require 导入。

WebStorm 最新变化页面上了解详情。

Xamarin

除了 .apk 文件之外,我们还添加了对生成 .aab (Android App Bundle) 的支持,这将很快成为向 Google Play Store 上传应用的唯一途径。

现在,可以在 Rider 内部为 imagesetappiconsetcolorset 创建和编辑 XCAssets。 这使您可以查看所有不同的终端设备及其分配的图像、图标和颜色。 可以通过拖放添加或替换图像和图标。 为了便于选择颜色,我们添加了流行的颜色选择器控件。

编辑 Android 布局或资源文件时,现在会自动生成 Resource.Designer.cs 文件,移除先前错误显示的所有错误。

F# 支持

代码补全中的后缀模板

后缀模板可以帮助您转换已经输入的表达式,无需向后跳转。 从 let 模板开始,我们终于为 F# 引入它们。

操作

Rider 为 F# tuplesunion 用例提供了新的模式析构操作。

重新排列代码的操作现已可用。 您可以在枚举或联合用例、记录或联合用例字段、匹配子句、元组和函数参数中向上/向下或向左/向右移动元素。

新操作 Optimize Imports 将使您无需在每次需要清理导入时手动触发类似的警告快速修复。

其他显著改进

  • Inline Variable 重构现在也适用于顶层 let 绑定。
  • 您会发现编辑器中的 XML 文档呈现效果明显改善。
  • 语言版本可在项目属性中指定,也会写入 .fsproj
  • 还有大量 F# 支持的小型快速修复、重构和其他改进。 Please take a look at the full release notes for more information.

Apple Silicon 支持 仅限 macOS 早期预览

具有完整原生 M1 芯片支持的 Rider 2021.2 的早期预览版现已推出。 此版本没有 x64-to-ARM64 转换。 它使用以下运行时:

  • 前端为与 Apple Silicon 兼容的 JBR (JetBrains Runtime)。
  • 后端为 .NET 6 Preview 4。

查看此页面了解更多信息。

数据库支持

从真实数据源生成

DDL 数据源生成是我们迈向长期开发无缝数据库版本控制的又一步。 使用此功能,您可以将 DDL 文件保存在 VCS 系统下,并在每次更新数据库结构时重新生成这些文件。

现在可以基于真实数据源生成 DDL 数据源。 DDL 文件会在本地创建,新数据源将以其为基础。 这样,您将始终能够重新生成这些文件并刷新 DDL 数据源。

用于功能和过程的单独文件夹

如果您在数据库资源管理器设置(齿轮图标)中打开 Separate Procedures and Functions 选项,它将立即生效。

对于 SQL Server,有用于标量和表函数的专用节点。 对于 PostgreSQL,有用于触发函数的节点。

用于触发器、键和索引的单独节点

新的数据库树选项 &lt;i&gt;Show Constraints and Triggers in the Schema&lt;/i&gt; 可在数据库资源管理器中为触发器、键和索引分配它们自己的个别节点。

跨数据库同义项的补全 SQL Server

跨数据库同义项的代码补现已提供。

插件

dotCover

现在,dotCover 可以在一个程序集中并行运行测试类的覆盖率分析。 在某些情况下,这可以加快覆盖率分析速度。

预加载单元测试运行程序可用于 .NET Core 和 .NET 项目,由于单元测试运行程序已加载到内存中,覆盖率分析可以更快开始。

还有一些其他改进也值得一提:

  • 我们改进了覆盖树中对 C# 8.0 和 C# 9.0 的支持(显示默认接口实现等)。
  • dotCover 将在覆盖率筛选器发生更改时主动询问是否重启 Unity 编辑器。

Dynamic Program Analysis (DPA)

现在,DPA 为每个问题存储两个值 – 历史最大值和来自上一次运行的值。 这可以防止漏报,因为之前问题可能会低于阈值并从问题列表中消失,这不是因为它们已被修正,而是因为它们的启动条件发生了变化。

此外,还有一些其他改进:

  • 启动性能分析时,DPA 会被自动禁用。
  • Dynamic Program Analysis 窗口现在允许选择多个问题。
  • 使用 SuppressMessage 特性禁止问题现在适用于异步方法。

SpecFlow 发布

SpecFlow is a tool to bring Behavior-Driven Development to .NET. 在社区的激励下,我们一直在帮助 SpecFlow 开发团队将 SpecFlow 插件引入 JetBrains Marketplace。该插件为 SpecFlow 测试添加了语法高亮显示、代码补全、导航和骨架代码生成。 我们在 Andreas Willich 在线讲座中深入介绍了这些功能。

精选插件

我们重新考虑了一份精选插件列表,您可以在初始设置期间在“Customize Rider”向导中查看这些插件。 现在,列表如下:

其他

Solution Explorer

node_modules 或 libs 等大目录会显著减慢文件的索引速度,使文件索引难以提供快速的文本搜索。 Rider 可以从上下文菜单中停止索引某些目录。

您现在可以为 Solution Explorer 中选择的多个条目编辑 File Properties(例如 Build Action 或 Copy to Output Directory)。

Assembly Explorer 和反编译器

The embedded decompiler now can decompile single-file apps. 它支持 .NET Core 3.1、.NET 5 和即将推出的 .NET 6 SDK 的单一文件格式。

使用 Assembly Explorer,您可以像以前一样浏览单文件应用内的捆绑程序集。

JetBrains Toolbox App

现在,JetBrains Toolbox App 不会让您错过任何重要产品更新。 Rider 会通知您是否有新版本可供下载并主动询问是否升级。 为此,您需要安装 JetBrains Toolbox App 1.20.8804 或更高版本。

其他

  • 如果编辑器开始滞后,处理大型视图的 Razor 开发者可以关闭占用大量 CPU 的辅助和自动建议。 您可以在此处找到这些设置:Preferences/Settings | Editor | General | Typing Assistance | Razor | Allow CPU-intensive typing assist
  • 现在,Go To Base/Inheritors 列表还会显示隐藏的重写。
  • 我们添加了对 Microsoft LoggerExtensions 的日志消息模板的支持。 Rider 现在可以分析代码、添加高亮显示并提供上下文操作。
  • 我们添加了可抑制异步方法的问题的选项。
  • 当您尝试以进程内模式在 32 位 IIS Express 上运行 64 位 Web 应用程序时,Rider 会发出警告 ("use64Bit": false in launchSettings.json) 。