Rider 最新变化

Rider 2020.2 提供了一些期待已久的功能,如 Localization Manager 和 Unity 集成中的着色器支持。 我们完全重新设计了单元测试运行程序和调试器 API,使它们更快速、更强大且更稳定。 这一版本还提供更好的 C# 支持、数据断点和对 GitHub Pull Request 的完全支持。

调试器

新调试器 API

新调试器 API

这一新版本提供了大幅重新编写的新调试器 API。 从 UI 角度而言并不明显,但提供了更多功能并允许在调试过程中使用插件,这是前所未有的。 包括改进的 super-lazy 值计算(中断情况更好)和自定义值表示。 外部最值得注意的是调试器工具窗口会为所有变量显示正确的图标.

数据断点

数据断点 仅限 Windows

数据断点在您需要关注特定对象的属性时非常有用。 您通常可以将它们用于知道会有更改但不知道更改来自代码库何处的场景。 可以从 Watch 工具窗口中访问此功能,且可以将其与数组元素一起使用。 由于当前平台限制,这一功能仅可用于 Windows 上的 .NET Core 3+。

了解详情

Pin-To-Frame

Pin-To-Frame

在 Rider 2020.2 中,我们添加了 Pin-To-Frame,让您能够跨框架固定值。 您可以为函数固定参数,并在堆栈框架的列表中查看它们。 调试递归函数时,您可以看到不同迭代中值的状态。

了解详情

Localization Manager

Rider 中现已添加 Localization Manager,可以帮助您本地化 .NET 应用程序或网站。 您可以使用 Tools 菜单或双击 .resx 文件访问它。

利用 Localization Manager,您可以在一个网格中查看项目所有 .resx 文件或指定文件中包含的全部内容。

您可以轻松地找到缺失本地化值或未使用的所有资源。

您可以添加、编辑、重命名、搜索、安全删除任何本地化资源,以及查找它们的用法。

您可以方便地使用补全中的预定义区域性列表将新区域性添加到应用程序或隐藏您暂时不需要的区域性。

您可以将整个网格导出为 CSV 格式,以便与翻译共享并将最终版本导回到 Localization Manager。

您可以直接在网格中为资源文件中的任何实体添加和编辑注释,还可以导出和导入这些注释。

您可以查看具有不同组的解决方案中 .resx 文件的整体结构。

GameDev

Unity

着色器支持

Rider 2020.2 添加了呼声较高的 CgHLSL 着色器支持! 提供语法高亮显示、代码补全、语义错误高亮显示、go to 定义、查找用法、重构,等等。

Rider 可以完全理解着色器文件的结构(包括宏)并能够直接在代码中导航到宏定义或展开它们。 可以找到并解析包含的文件,在包含的文件上按 Ctrl +点击将带您直接前往该文件。

暂停点

暂停点

引入一种新断点! 在代码中设置断点,将其转换为暂停点,当调试器命中它时,Unity Editor 会立即切换到暂停模式,这样一来,您可以使用 Inspector 查看游戏的状态。

在与条件和依赖断点结合使用时,这将是一款强大的工具。 在这篇博文中了解更多。

Burst 分析

Burst 分析

启用 Burst 模式的代码可以大幅提升 Unity 应用程序的性能,但它会约束代码的行为。

Rider 2020.2 为 Burst 上下文中调用的所有代码添加了智能分析,并会高亮显示任何不正确的代码用法,如装箱、foreach 或 try/catch 的使用以及读取/写入静态字段,等等。

Apple 设备的 USB 调试

Apple 设备的 USB 调试

Rider 为网络调试玩家提供了出色支持,包括独立桌面玩家、移动玩家和主机玩家。

Rider 2020.2 为 Apple 设备引入了基于 USB 的调试(计划在以后版本中为 Android 设备提供 USB 调试)。

批量快速修复

批量快速修复

所有可以在文件、项目和整个解决方案上运行的快速修复现在都已升级,可以进行批量修复。

移除冗余 Unity 特性,将字符串文字比较替换为 CompareTag,通过将对象创建与设置父变换相结合来改进性能,等等——点击一下,即可执行整个 Unity 项目的所有任务。

调试器值扩展

调试器值扩展

Rider 的调试器会为您的 Unity 项目显示额外的上下文值。 您可以轻松访问活跃场景、子游戏对象和所有附加的组件。

Rider 也会显示特定类型的改进汇总信息,如四元欧拉角、向量的完整精确值、行为的启用状态,等等。

集成的 UnityYamlMerge 支持

集成的 UnityYamlMerge 支持

Rider will automatically use Unity’s Smart Merge tool to merge asset files when performing integrated version control operations.

更多功能

  • 为场景、预制件中的代码用法基于文本的资源和其他资源编制索引时,可以大幅减少内存使用量和提高吞吐量。
  • 一般的 Unity API 术语已作为自定义字典添加到 Rider 的拼写检查器中。
  • Code Cleanup 现在能够识别 Unity 类型,无需再对序列化的字段重新排序,在 Unity Inspector 中显示这些字段时此识别功能尤为重要。
  • More minor features and fixes.

Rider for Unreal Engine 早期预览

Rider for Unreal Engine

您是否对使用 Unreal Engine 进行游戏开发感兴趣? 我们致力于将 Rider 打造成独立、一体化的通用游戏开发 IDE,已引入对 Rider 中 Unreal Engine 开发的早期支持:

  • 由 ReSharper C++ 引擎提供支持的原生 C++ 支持。
  • 已为 Unreal Engine 项目优化性能。
  • 与 Rider Editor 中的 Unreal EditorBlueprints 信息集成。
  • 理解 UE 反射和 RPC,强制执行 UE 命名规则。
  • 支持 HLSL 与 C#、JSON 和 uproject/uplugin 方言。

可以免费使用抢先体验预览版。 只需注册加入

代码分析

可空性代码分析现在可以感知更多的用例并能够通过析构foreach 周期跟踪不正确的可空性。 还提供相应的快速修复。

代码分析现在会为 API 考虑 JetBrains.Annotations 特性(NotNullCanBeNull),甚至在禁用可空引用类型 (#nullable disable) 的代码中也是如此。

如果您为项目安装了 System.Linq.Async NuGet 包,现在还可以在 IAsyncEnumerable‹T› 上使用上下文操作将 foreach 转换为 LINQ 并将 LINQ 转换为代码。

现在可以使用合适的快速修复轻松地生成 IEqualityComparer‹T›IComparer‹T› 实现。

现在,验证已实现或重写成员的可空性时,代码分析会考虑编译器注释(如 AllowNullDisallowNull)。

如果变量和返回类型从未具有或返回可空值,将会有新的检查和快速修复使它们“不可空”。

代码分析现在可以遵循 .editorconfig 文件中的 dotnet_diagnostic 规则。 在 .editorconfig 文件中指定检查的严重性,如 dotnet_diagnostic.CS1058.severity = hint,Rider 会相应地显示检查。

对接口功能中默认实现的支持在此版本中得到增强。 代码编辑器中的左侧装订区域会显示已实现或重写的方法,且我们的重构和导航现在能够感知此 C# 语言功能。

XAML 代码中现在可以使用嵌入提示。 我们为标记属性名称和 DataContext 以及边距和填充提供提示,如果您不想记住它们的顺序,这一支持非常方便。

可以通过 Alt+Enter 菜单为解决方案禁用 Suppress nullable warning with ! 快速修复。

单元测试

我们为 .NET Framework 和 .NET Core 从头重新构建了单元测试运行程序,以便为在 Visual Studio 进程外运行的两个运行时使用相同的运行程序。 它会帮助我们解决一系列问题:发现、运行、调试单元测试,并让我们能够完全控制 .NET Core 测试的单元测试层次结构。

新的单元测试运行程序引入了以下重要改进:

  • 内置对 NUnitxUnitMSTest v2 单元测试框架的 MSFakes 支持。
  • 内置对 NUnitxUnitMSTest v2TypeMock Isolator 支持。
  • MSTest v2 测试现在可以在不安装 Visual Studio 的情况下运行。

Rider 现在支持适用于 xUnit 和 NUnit 框架的 .NET Core 测试中的 DisplayName 特性。

您可以同时选择多个单元测试状态,以便在单元测试树中筛选它们。 按住 Ctrl 键并点击状态可以启用或禁用多个状态。

在应用搜索或目标框架筛选器来显示单元测试总数和满足筛选标准的测试总数时,每个状态会有两种不同的计数器。

我们在 Output 窗口中添加了对 ANSI 转义码的支持,这样您就可以在需要时给单元测试输出着色。

如果您的 MSTest 单元测试的状态为“Visual studio installation folder is not set”,Alt+Enter 菜单中有一个新操作可以打开 Settings 对话框。

版本控制

GitHub 拉取请求

终于增强了对 GitHub Pull Request 的支持! 您将可以浏览、分配、管理,甚至合并 Pull Request,查看时间线和内联注释,提交评论和审查,以及接受更改。

新支持包括:

  • 适用于 Pull Request 查看器的新布局。
  • 在时间线中查看提交前检查的结果。
  • 支持审查。
  • 与注释交互。
  • 在 IDE 中合并 Pull Request。

如需了解新功能的更多详细信息,请阅读这篇博文

其他 VCS 功能

除了全面支持 GitHub Pull Request,以下新功能可用于版本控制系统:

  • 支持 WSL2 中安装的 Git
  • 我们改进了呈现 Compare Branches 操作结果的方式。
  • 现在,您可以在 Git 工具窗口的 Log 标签页中选择多个本地提交,然后将其 squash 为一个提交。 可以右键点击上下文菜单调用此操作。

NuGet

您可以使用 NuGet 工具窗口在新的 Implicitly Installed Packages 部分中查看解决方案或项目的全部传递包。

鼠标悬停在隐式包上会显示一个工具提示,其中包含隐式包的版本和引用包的相关信息。 如果该包在多个版本中引用,将显示所有版本。

我们添加了一个新的上下文弹出窗口菜单,可以通过右键点击或在 NuGet 包上按 Alt+Enter 调用。 您可以在这里快速访问单个 NuGet 包的所有相关操作,例如,更新或移除包,在 Assembly Explorer 中打开包来检查 API,在文件系统资源管理中显示包,导航到相关 NuGet.org 条目或查找依赖代码。

还有一个新的 Quick NuGet Documentation 操作可以调出包的隐式引用路径。

包的搜索框也进行了更新。 您可以点击放大镜图标或使用 Alt+向下箭头打开最近包搜索的历史记录。

您还可以为两个最常更改的属性(globalPackagesFolderrepositoryPath)编辑值。

Feeds 标签页中,我们可以立即看到源路径是否无效,因为路径会使用红色矩形高亮显示。

如果我们搜索包且未在任何源中找到它,搜索列表中还会显示警告消息。

详细信息窗格中的新警告会直观指示哪些包仍在维护或是已被弃用。

F# 支持

重构

Introduce Variable 重构现在可用于表达式。 调用时,它会显示合适的子表达式(除非已选定代码的特定部分)并建议替换相似的子表达式。 还可以智能命名新变量,并根据类型和上下文建议有意义的名称。

Rename 现在可以作用于带下划线的通配符。 需要将通配符模式转换成命名变量时,您可以调用此重构,而不必手动操作。 建议名称时也会考虑类型和上下文。

快速修复与上下文操作

Import Type 得到了显著改进。 它现在适用于更多用例,并会在建议类型时考虑参数数量。 Rider 现在还会建议引用模块或解决方案中的另一个项目并从其中导入类型。

其他 VCS 功能

还添加了几个新的快速修复:为参数列表中函数的应用程序添加括号,为包含的类型或模块添加 Extension 特性,修复语法错误,将 let 转换为 use,等等。

分析器

分析器

我们实现了快速冗余限定符分析器,并提供相应的快速修复来移除冗余项。

编辑器

现在,还提供更多选项来以不同的方式高亮显示各种符号。 另外,类型缩写会高亮显示为它们缩写的类型,函数可以高亮显示为方法。 Both are external contributions, and we thank Igor Bagdamyan for them.

Rider 现在可以为 |> 链中的表达式提供类型提示。 它们可以帮助您跟踪发生的情况,而不必在头脑中跟踪整个链。 This too is an external contribution, which we’d like to thank Saul Rennison for.

颜色参考现在会在代码中高亮显示,它们的可见性提高。

Finally, we now have an F# Compiler Service monitor – thanks again to Saul. 当 FCS 繁忙时,就会显示指示器。 这基本上是一个诊断工具:它可以帮助开发者理解 IDE 识别的原因,并在行为可疑时,向 Rider 团队报告并以进行分析。

To learn more about updates in F# support, please take a look at the release notes on GitHub.

x:Bind 支持

我们为 UWP 开发者带来了好消息——终于支持通过 x:Bind 进行编译绑定了!

Rider 能够正确地解析 x:Bind 代码并提供多个检查和相应的快速修复。 它会针对缺失属性 setter、BindBack 特性和重载冲突的情况向您发出警告。 而且,有一组 Create from Usage 快速修复可以在 C# 代码隐藏内生成适当的字段、属性或方法。

还有适用于 x:Bind 表达式内 propertyPathBindBackUpdateSourceTrigger 特性的代码补全和参数信息。

Change SignatureSafe Delete 重构现在可以感知 XAML 代码中的方法用法,并相应地更新它们。 另外,如果您从 C# 代码隐藏调用 Make Static/ConstEncapsulate Field 重构,它们可以在 XAML 代码中直接使用并正确地更新 XAML 用法。

可空性感知已集成到 x:Bind 代码分析中。 如果 C# 代码中有 CanBeNullNotNull 特性,Rider 现在会在 XAML 代码中直接向您显示 null 相关的检查,例如,适用于 propertyPath 中所用方法参数的“Possible System.NullReferenceException“Possible null assignment to non-nullable entity”

其他 Rider 功能,如 Find Usages 和 Go to Declaration,也可以感知 x:Bind 绑定。

插件

dotTrace

dotTrace dotUltimate

dotTrace 插件可以在 Windows 上分析 Mono/Unity 应用程序的原生部分。 使用 Enable native profiling 选项开始一个会话,您就会在性能快照中看到原生和托管调用堆栈。

Dynamic Program Analysis

Dynamic Program Analysis

现在,您可以在 Settings/Preferences | Build, Execution, Deployment | Dynamic Program Analysis | Filtering 中按进程/模块/类/方法筛选来缩小 Dynamic Program Analysis 的范围。

  • 如果您仅需要分析一些特定方法/类等,请将其添加到 Analyze code only in 列表中。
  • 如果您需要在分析中隐藏一些特定方法/类等,请将其添加到 Do not analyze code in 列表中。

dotCover dotUltimate

这一新版本为 dotCover 插件带来一些实用的功能:

  • 使用 Unit Tests Coverage 窗口,您现在可以导出覆盖率报告。
  • Unit Tests Coverage 窗口现在具有快速搜索功能。
  • 您现在可以从代码中的符号导航到覆盖率树中的该符号(Navigate to | Coverage Tree 或使用 Coverage 工具窗口中工具栏上的 Navigate from Editor 图标)。

Azure Toolkit for Rider

在您使用 npm (npm install -g azurite) 安装 Azurite storage emulator 后,Azurite node 将被添加到 Services 工具窗口中。 您可以在此处开始、停止和清除存储模拟器。

Azure Functions 中使用计时器触发器时,您必须输入有效的 NCrontab 表达式,这一表达式会定义何时执行此函数。 Azure Toolkit for Rider 现在可以帮助您编辑 crontab,提供代码补全与一些示例表达式,您可以参考这些示例表达式开始工作。

Rider 现在会验证 NCrontab 表达式是否有效,并为您提供可能出错的相关详细信息。

Markdown 插件

Markdown 插件

欢迎使用 Rider 中的 Markdown 支持! Rider 2020.2 捆绑了 Markdown 插件。 它会在您的解决方案中识别 Markdown 文件,为它们提供专用编辑器,并在实时预览中显示渲染的 HTML。

Godot 支持

Godot 支持

已重新设计 Godot 运行配置。 您可以运行、调试 PlayerEditor 运行配置并在运行时进行分析。 此外,您还可以编辑命令行参数行,它可以用于运行播放器和编辑器。

而且,您现在可以直接在 Solution Explorer 视图的上下文菜单中为各个场景启动运行或调试。

数据库支持

单独的单元格值编辑器

单独的单元格值编辑器

现在,如果您的单元格中有一个巨大的值,可以在单独的面板中进行查看和编辑。 您还可以使用右侧工具栏切换自动换行模式。 为您的数据使用 Rider 的代码编辑器的所有功能!

为布尔值提供新 UI

为布尔值提供新 UI

现在提供了一种更方便用户查看和编辑布尔值的方法。 True 值现在用一个圆点标记,以区别于其他所有值。

数据编辑器中的 DML 预览

从该版本开始,您可以在数据编辑器中检查表示您的更改的查询。 存在未决定更改时,现在会有一个 DML 图标处于活动状态。 点击此图标,您将看到一个包含 DML 预览的对话框。 此查询不一定是将要运行以修改您的数据的确切 SQL,因为 Rider 使用 JDBC 驱动程序来更新表,但大多数情况下它是相同的。

查看 DataGrip 最新变化,了解 Rider 2020.2 中提供的所有数据库改进。

Web 开发

利用适合 JavaScript 的新功能节省时间

利用适合 JavaScript 的新功能节省时间

新智能意图 (Alt+Enter) 会帮助您更快地执行一些操作。 例如,您现在可以将带有数字索引的 for 循环快速转换为 forEach 数组方法。 浏览 JavaScript 和 TypeScript 文件中的文档注释也变得更容易,因为您现在可以在编辑器中直接呈现它们,这将最大程度地减少分心。

使 Prettier 成为 JavaScript 项目中的默认格式化程序

使 Prettier 成为 JavaScript 项目中的默认格式化程序

想要使用 Prettier 而不是内置的格式化程序来整理代码? 借助此更新,这会变得比以前更容易。 从 JetBrains Marketplace 安装插件,在 Settings/Preferences | Plugins 页面上勾选新的 On code reformat 复选框,然后在您重新格式化 .js.ts.jsx.tsx 文件时,IDE 就会使用 Prettier。 也可以轻松添加其他文件类型。

享受一流的 Vue 支持

享受一流的 Vue 支持

在过去一年中,我们添加了 Nuxt.js 支持、Vue 特定的代码样式设置、TypeScript 项目中围绕 Vue 的改进以及许多其他更新。 Rider 中的 Vue 支持从未如此先进!

查看 WebStorm 最新变化,了解 Rider 2020.2 中提供的所有 Web 开发改进。

重构

在这一版本中,Conflicts 对话框已重新设计成 Refactorings 界面中的单独一步。 之前简单的列表已替换为按文件分组的树。 要返回到简单的列表,请点击右侧工具栏上的 Flatten 图标。

在表达式上调用 Introduce parameterIntroduce field 重构,Rider 会询问应向表达式的哪一部分应用重构。

其他更新

Xamarin

有以下几处显著更新:

  • 在 macOS 和 iOS Xamarin 项目中可以使用 File Templates
  • 我们改进了 XCode 同步——没有“.Designer.cs 文件”时,Rider 现在会生成一个文件,而不会显示错误。

最后但同样重要的更新

  • Search Everywhere 中搜索结果的新显示方式。
  • 我们现在支持将调试器附加到托管配置的 .NET Сore 运行时并将它们与调试一起运行。
  • 为所有可运行的项目生成运行配置。
  • 现在支持适用于网站项目的 ProjectReferences