Rider 最新变化

在 macOS 和 Linux 上,Rider 2020.1 现在默认在 .NET Core 运行时上运行后端,并提供 Xamarin Hot Reload 和 Dynamic Program Analysis。 它引入了一种简单的方法来配置编辑器的严重性,并增加了对整数值的数据流分析以及更快的代码补全速度。 Debug 窗口已经过重新设计,并且 Extract Class 重构和 Coverage Filters 现在可用。

下载

30天免费试用

在 macOS 和 Linux 上,后端在 .NET Core 运行时上运行

后端在 .NET Core 运行时上运行

欢迎使用 Rider .NET Core 版本! 在 macOS 和 Linux 上,后端终于实现了默认在 .NET Core 运行时而不是 Mono 运行时上运行。 您会立即注意到:

  • 更好的性能.
  • 更低的内存占用。
  • NuGet 恢复现在采用多线程(而不像在 Mono 上那样采用单线程)。 这意味着,如果您使用具有 4个逻辑核心的 CPU,则速度变为 4 倍;如果您使用具有 8 个逻辑核心的 CPU,则速度变为 8 倍。
  • 还去除了许多其他 Mono 限制。

顺带一提,当前的 .NET Core 版本是最新、最出色的 3.1,与 3.0 版本相比,它拥有许多性能改进。 

请注意,目前不支持 Windows,只支持 macOS 和 Linux。 我们计划在今年晚些时候添加 Windows 支持。

您是否想了解有关从 Mono 转换到 .NET Core 的更多信息,并查看性能图? 查看这篇博文! 

如果您在 .NET Core 上运行 Rider 后端时遇到任何问题,并且想要返回 Mono 运行时,请选择 Help | Switch IDE runtime to Mono。 如果您有任何问题,请别忘记告诉我们。

Xamarin Hot Reload

Xamarin Hot Reload

现已实现对 Xamarin Hot Reload 的初步支持。 现在,在设备或模拟器上调试时,Rider 会将在 Xamarin Forms XAML 中所做的更改自动应用到应用程序,无需重新构建和重新部署整个应用程序。

请注意存在的限制:如果装有 Rider 的 PC/笔记本电脑和 iOS 设备不在同一个 Wi-Fi 网络中,则即使将 iOS 设备通过 USB 连接到 PC/笔记本电脑,Hot Reload 也无法正常工作。

除此之外,Xamarin 支持还获得一个重要修复:在 iPhone XS Max 设备上运行 Xamarin.iOS 项目时,Invalid target architecture 'arm64e' 错误不再出现。

查看博文了解更多更新。

Dynamic Program Analysis (DPA)

Dynamic Program Analysis (DPA)

我们很高兴引入 Dynamic Program Analysis。 每次在 Rider 中运行您的项目时,DPA 都会开始收集内存分配数据。 关闭应用程序后,DPA 将显示检测到的问题列表:闭包以及到大型和小型对象堆的分配。 最大的优点在于,您无需启动任何“分析会话”即可获取快照。 可以像往常一样正常运行,并且所有数据都将在后台收集,开销几乎为。 在各种实际解决方案上测试 DPA 的结果表明,速度只会降低 0% 到 2%。

请注意:DPA 仅适用于 Windows,并且无需单独的许可证即可将其激活。

了解更多:使用 Dynamic Program Analysis 自动检测应用中的内存问题

整数值的数据流分析

整数值的数据流分析

这一版本的 Rider 引入了一种新型代码分析,可以在应用程序中跟踪整数值的用法。 这种新型的分析会跟踪所有 int 局部变量的值如何变化,并验证这些变量上的所有常见运算的正确性,以检测无用或可能出错的代码段。 即,它会警告您:

  • 结果总是为 truefalse 的关系/相等运算符。
  • 检查 int 值的启发式不可到达的 switch case。
  • 无意义的算术运算,如乘以 1、加 0 等。
  • 可能的 int 溢出。
  • 可能的除以 0

为了提高分析精度,我们还添加了两个新的 JetBrains.Annotations 特性来使用 int 类型的类型成员和参数:([NonNegativeValue][ValueRange(from, to)])。 这些特性指定了特定 int 成员的值在运行时如何变化。

Unity 支持

Unity 支持

  • 我们在资产索引编制的内存使用和速度方面进行了重大改进。 现在,Rider 会在查看您的资产之前为所有代码建立索引,这意味着所有生产力功能(例如代码补全、高亮显示和检查)都可以比以前更快地调用。 资产索引编制将在解决方案加载后继续,同时您可以继续工作,而一旦索引编制完成,Rider 便会查找用法,甚至在资产内部重命名。 当然,一旦完成,索引将不断更新,仅查看新更改的文件。
  • 资产索引编制现在还更加智能。 它了解代码在 NestedVariant 预制件中的用法,并显示 ScriptableObjects 的用法和序列化字段的值。
  • 现在,单元测试发现可以更好地与 Unity 项目一起使用,而 Rider 会自动在项目中查找所有 Edit 模式和 Play 模式测试。
  • 我们添加了一个新的性能检查 Prefer jagged arrays to multidimensional arrays,在热路径中可以提供更好的性能。 这是一个微优化,因此仅建议在性能关键上下文中使用,例如 Update 方法或从 Update 调用的任何内容。
  • Rider 将不再为 Unity 项目的代码补全建议 Boo.Lang.ListSystem.Diagnostics.Debug
  • 我们在 Generate 对话框中调整了事件函数的顺序,以首先放置最重要的方法。 从 Alt+Enter 菜单生成函数时,它们也会在正确的位置生成。
  • 有关更多更新和修复,请参阅 GitHub 存储库
C# 支持

C# 支持

我们继续添加了对 C# 8 语言功能的更多支持。 我们在后台对 C# 语言支持进行了许多重构来准备代码分析和其他功能(如重构和 ReSharper Build),以支持可空引用类型 (NRT)。 在 Rider 2020.1 中,代码分析会报告与可空引用类型相关的编译警告并为其中大多数警告提供了快速修复。

还有一些新的检查和快速修复:

  • 针对可空引用类型,检测冗余类型参数约束。
  • 检测并使用方法的 async 重载(可用时),而不使用 sync 重载。
  • 使用 nameof 表达式,而不使用 typeof(SomeType).Name 构造,以便获得当前类型的名称。
代码补全

代码补全

在过去的一年中,我们收到了一些关于代码补全弹出窗口的报告,指出这些弹出窗口需要很长时间才会显示。 我们已经解决了这个问题,现在当您开始输入后,代码补全弹出窗口的显示速度显著提高,尤其是在大型解决方案中。

此版本提供的另一个非常方便的功能是,如果您不想在代码补全中看到标记为 Obsolete 的成员,可以将其隐藏。

最后但同样重要的是,从代码补全弹出窗口中补全一个项目现在可以遵循您的代码样式设置。

重新设计的 Debug 窗口

重新设计了 Debug 窗口

我们完全重新设计了 Debug 工具窗口的 UI,使其尽可能干净整洁。 当只有一个调试会话运行时,选项卡的布局会得到简化,因为所有选项卡现在都位于一个级别上。 选项卡标题占用的空间更少,因此有更多空间显示调试器内容。 存在多个会话时,将添加一个选项卡层来分隔各个会话。

同时,我们还合并了 ThreadsFrames 视图。 如果您目前不需要 Threads 视图,则可以通过点击 Hide threads view 图标将其隐藏。

调试器引擎中的更新

调试器引擎中的更新

我们还更新了调试器引擎,以便增强您的调试体验:

  • 现在,您可以从最初在调试器下启动的进程中分离,而无需终止应用。
  • Step Into 操作默认启用 Smart Step Into (Preferences/Settings | Build, Execution, Deployment | Debugger | Stepping | .NET Languages | Always do Smart Step Into)。
  • 调试器支持 .NET Core x86 运行时。
  • 现在,线程名称显示在执行行中,以帮助您了解应用程序当前的执行位置。
  • 在发生异常而停止调试会话后,您可以执行 Skip to Here/Cursor 操作。
  • 现在,您可以更好地控制 Debug Output 窗口,并且可以在 Debug Output 中关闭服务消息。
以轻松的方式配置编辑器的严重性

以轻松的方式配置编辑器的严重性

借助这项新功能,您可以轻松更改编辑器的高亮显示级别。 只需在非模态弹出窗口中点击一下,即可打开或关闭 Code Vision Parameter HintsUnity Performance HintsErrorsWarningsSuggestionsContext actions 以及更多元素。 在代码编辑器选项卡的右下角可以找到铅笔图标。

单元测试的更新

单元测试的更新

我们调整了 Unit Test Session 和 Unit Test Explorer 窗口中的工具栏。

  • 多个图标已从左侧工具栏移至顶部。
  • 现在,可以使用顶部工具栏中的新文本框,通过文本搜索来筛选单元测试树。
  • 默认情况下,FailedAbortedInconclusive 状态已合并为 Broken 如果您希望将它们分开,请点击顶部工具栏上的“齿轮”图标。

除此之外,我们还添加了三大功能:

  • 您可以使用 Unit Test Explorer 和 Unit Test Session 工具窗口中新增的高级 Group by 功能创建自定义分组。 使用添加的 Duration 元素,您现在可以根据执行测试所需的时间对单元测试进行分组。
  • 如果您有多个单元测试(如今通常会这样)并且不想看到其中一些,可以在 Unit Test Session 工具窗口中按目标框架进行筛选。
  • 您可以导出和导入任何单元测试会话。 当您更改代码中的某些内容并希望为两个分支运行/使用同一组单元测试时,这让您可与团队、在计算机之间或在分支之间共享会话。 此外,导出的文件与 ReSharper 完全兼容,因此您可以与使用 ReSharper 的同事共享 Rider 中的单元测试会话,反之亦然。

了解更多:Rider 2020.1 中的测试运行程序更新

反应式 TFS 客户端登陆 RTM

反应式 TFS 客户端登陆 RTM

Rider 2019.3 中,我们添加了一个实验性 TFS 客户端,此客户端可为 Checking for changes 操作提供显著的速度改进。 在当前发布周期中,我们继续在该客户端上投入了大量精力。 

最终,我们的 TFS 客户端发布了第一个版本,带来了许多改进。 我们来看看两个最重要的改进。 首先,启用 Version Control Integration 现在适用于使用 Visual Studio 在本地创建的 TFS 工作区。 这意味着您不再需要在 Rider 中从头开始重新创建本地工作区。 第二,我们大幅提高了 Delete 和 Rollback 操作的性能。

要开始使用 TFS 客户端,请转到 Settings | Version Control | TFVC 并启用它。

代码编辑器更新

代码编辑器更新

像所有 JetBrains IDE 一样,Rider 现在在所有主题中使用 JetBrains Mono 作为默认字体。 我们希望您喜欢它!

现在,终于完全支持到目前为止 Rider 中一直缺少的另一个 ReSharper 功能:在解决方案的文件中粘贴代码时,可以自动导入命名空间。

如果您手动编辑与 NuGet 相关的文件,我们认为您将乐于从 Rider 获得协助,因为它现在初步支持编辑 NuGet.Configpackages.config*.nuspec 文件,包括代码补全、语法验证和快速文档弹出窗口。

以下较小的功能增强也值得一提:

  • 方法分隔符现在可以在 C# 中使用,以可视方式分隔接口、类、方法等。
  • 快捷键 Alt+Shift+向上/向下/向右/向左箭头将以与在 Visual Studio 中相同的方式执行块选择。
  • C# 现在支持两对操作 Move Caret To Code Block Start/Move Caret To Code Block EndMove Caret To Code Block Start with selection/Move Caret To Code Block End with selection,并且这两对操作的行为与在其他 JetBrains IDE 中的行为相同。
  • 文档工具提示会在鼠标悬停时显示高亮显示为错误的代码符号。
Extract Class 重构

Extract Class 重构

另一个期待已久的 ReSharper 重构终于登陆 Rider - Extract Class

想知道为什么您需要此重构? 想象一下,您有一个类正在完成实际上应当由两个不同的类完成的任务。 使用此重构是将复杂类分解成两个单一职责类最安全、最有效的方法。Extract Class 将帮助您选择要从旧类转移到新类的方法和字段。 对于任何中断的依赖项和可访问性问题,它还会发出警告,并建议冲突解决方案选项。

Solution Explorer 视图

Solution Explorer 的更新

Solution Explorer 视图引入了两个新的实用文件夹,可为您提供有关项目的更多信息:作为 Assemblies 文件夹的子文件夹的 Implicit references,以及 MSBuild import targets

除此之外,还有一些较小的更新:

  • 我们向 Add References 对话框中添加了一个新功能,名为 Recent Assemblies
  • 我们向应用程序设置文件 (*.settings) 中引入了一个简单的设计器。
  • 文件属性可用于 Solution Explorer 视图中的所有文件 (在 View | Appearance | Details in Tree Views 下设置) 。
  • 现在,在 macOSLinux 上的 .NET Standard 项目中,Resx 代码生成的效果更好。
代码覆盖率和性能分析的更新

代码覆盖率和性能分析的更新

为了更好地控制您在 Rider 中获得的单元测试覆盖率结果,我们添加了 Coverage Filters。 要指定这些筛选器,请转到 Preferences/Settings | Build, Execution, Deployment | dotCover | Filtering

如果您在 LinuxmacOS 上进行性能分析,我们为您带来了一些好消息:在这些操作系统上,.NET Core 应用程序终于可以在 Tracing 模式下进行性能分析了。 在 Linux 上,您现在还可以将分析器附加到 .NET Core 应用程序。

运行配置和构建

运行配置和构建

  • 我们添加了一个非常方便的操作:Cancel build
  • 所有运行配置都有 Build/Clean Project 任务。 这些任务使您可以在启动运行配置之前选择要构建或清理的项目。
  • 现已支持 UpToDateCheckInput MSBuild 属性。 
  • Publish to folder 运行配置的 UI 现在支持 ARM 标识符和任意自定义目标运行时标识符。
  • 捆绑的 MSBuild 已更新至 16.5
反编译器和 IL Viewer

反编译器和 IL Viewer

我们为 Rider 的反编译器和 IL Viewer 添加了一些新功能: 

  • 可空引用类型 (NRT) 支持可用于反编译器。 请注意,这仅适用于声明,不适用于方法的主体。
  • 支持反编译接口的默认成员。
  • 对反编译 tuple 组件名称的支持得到了改进。
  • 反编译后,外部源文件中现在可以使用 IL Viewer Code Vision
版本控制支持

版本控制支持

  • Code Vision 现在可以显示方法的历史记录。 默认启用此功能,而不是 VCS Annotate(可在 Preferences | Editor | Code Vision | VCS Actions 中调整)。
  • Git Branches 弹出窗口获得了一个显式搜索字段和一个经过重新设计的 Refresh 按钮。
  • 传入(蓝色)和传出(绿色)提交指示器已添加到状态栏。
  • 查看新的对话框:Interactively Rebase from Here
  • 根据您使用的 VCS,Repositories 工具窗口现在称为 GitSubversion, MercurialPerforce
  • DiffMerge 视图现在支持代码高亮显示。
  • 如果您的计算机上没有 Git,Rider 将为您自动下载并安装 Git。
适合 F# 开发者的新功能

适合 F# 开发者的新功能

为了改善 Rider 中的 F# 支持,我们进行了大量改进和修复,旨在为您的日常工作提供帮助:

  • 现在可以使用 Send project references to F# Interactive 操作。
  • 调试时,鼠标悬停时的评估工具提示适用于更多表达式:方法和类型中的自引用限定符 (this.Property) 以及索引器表达式 ("foo".[1])。
  • 添加了 Type 文件模板。
  • 代码分析器现在可以并行运行。
  • 用于现有代码检查的几个新的快速修复,例如 FS0005: Field not mutable 检查的 Make field mutable 快速修复。
  • 一些新的代码检查以及相应的快速修复,例如“Redundant Attribute suffix”检查。
  • 两个新的代码意图:Elif to If/If to ElifNegate If expression condition
  • Code Vision 添加了新的操作 Copy Inferred Type,并且不再显示类型的父命名空间,以便使显示的信息更短。
  • Extend Selection 可以选择整个 () 表达式。

有关更多更新和修复,请参阅 GitHub 存储库

Web 开发

Web 开发

  • 用于转换为可选链和/或空值合并以及从用法推断参数的新意图。
  • 鼠标悬停时可以显示文档弹出窗口。
  • VuexComposition API 支持。
  • 保存时运行 Prettier 格式化。
  • Go to 弹出窗口中的完整文件路径。
  • TypeScript 项目的 Yarn 2 支持。
  • 有关 Web 开发更新的更多信息,请参阅 WebStorm 2020.1 最新变化
数据库支持

数据库支持

  • Excel 格式导出。
  • 支持 utPLSQLTsqlt 测试框架。
  • 在代码编辑器中查看结果(默认情况下禁用)。
  • 新身份验证选项.
  • 共享 SSH 配置.
  • MongoDB 中更好地筛选数据。
  • 以及 DataGrip 2020.1 最新变化中介绍的更多数据库相关功能。
其他功能和改进

其他功能和改进

  • Rider 终于开始支持 WIX (Windows Installer XML Toolset) 项目了! 
  • 支持 Godot 游戏引擎的新插件现在可在 Rider 2020.1+ 中使用。 它在 GitHub 上是开源的。 
  • C# 代码样式设置现在可以搜索。
  • 您可以让 Rider 使用与 ReSharper 相同的整机范围(全局)设置文件,以同步两个工具的设置(使用 File | Settings | Tools | ReSharper | Synchronize machine-wide Rider and ReSharper settings 调整此行为)。
  • 代码格式化为 C# 代码样式带来了涵盖尾随逗号的新设置。 可以在 Preferences | Editor | Code Style | C# | Syntax Style | Trailing comma 下找到它们,并且它们都与 StyleCop SA1413 检查兼容(除了极少的个别情况)。
更多功能

更多功能

  • 新的 Zen 模式结合了免打扰模式全屏模式
  • 如果要并排运行终端会话,请垂直或水平拆分 Terminal 工具窗口。 您可以从 Terminal 调用上下文菜单来创建、导航和关闭拆分的终端会话。
  • HTTP 客户端有很多改进。 您可以直接从 HTTP 请求文件自动补全 URL 并导航到相关的端点;您可以从 Endpoints 视图生成 HTTP 请求;HTTP 客户端现在可以正确地自动补全路径变量。
  • 现在,所有操作系统都可以使用统一的 IntelliJ Light 主题。
  • 现在,Windows 10 上的顶部窗口边框在无边距模式下看起来更美观。

IntelliJ IDEA 2020.1 最新变化

下载

30天免费试用