Rider の新機能

Rider 2021.3 は、ホットリロード機能を含む .NET 6 SDK のサポートを正式に提供しています。 メインツールバーと Debug(デバッグ)タブのデザインを一新し、新しい Problems View(問題ビュー)ツールウィンドウが追加されています。 また、ファイルスコープの名前空間やグローバル using ディレクティブなどの C# 10 機能のサポートを拡充し、最新の言語機能をより効果的に使用できるように更新されています。

Unity と F# のサポートが更新されているほか、保存時の Reformat and Cleanup(整形とクリーンアップ)、.NET 6、.NET 5、および .NET Core 3.x SDK の XAML プレビュー、および Apple Silicon チップのサポートも追加されています。

.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 では、メインツールバーを完全に設計し直しています。 この新しい設計によって、すっきりとした機能性の高いツールバーを提供できるようにしました。 このツールバーには以下の機能があります。

  • Rider のコンテキストナビゲーションの基本である Back(戻る)ボタンと Forward(進む)ボタン。
  • すべての VCS 関連機能にアクセスして操作できる VCS ウィジェット。 このウィジェットは、Commit(コミット)ツールウィンドウにより近い場所に配置されています。
  • グローバル検索機能の主なエントリポイントとして機能する大きな Search Everywhere(どこでも検索)フィールド。
  • ソリューション関連の構成を管理できる Solution Configuration(ソリューション構成)ウィジェット。
  • 実行構成の管理と制御を簡単に行える新しい Run/Debug(実行/デバッグ)ウィジェット。

ただし、従来のツールバーに慣れていた Rider ユーザーの作業フローが中断されないように、新しいツールバーは Rider の新規インストールに対してのみデフォルトで有効になります。 すでに Rider をインストール済みで新しいツールバーを試してみたい場合は、Toolbar Classic(ツールバークラシック)ではなく、View(表示)| Appearance(外観)| Toolbar(ツールバー) からいつでも有効にできます。

Problems View(問題ビュー)

ソリューションに潜むすべての問題を 1 か所で確認できれば便利です。そこで、Problems View(問題ビュー)を導入しました! Rider の Problems(問題)タブにある Problems View(問題ビュー)は、プロジェクトの読み込みエラー、NuGet 復元プロセスの失敗、開いているファイルのインスペクション、すべての SWEA エラーなど、ソリューションに存在するすべての潜在的な問題が集約されるツールウィンドウです。 このツールウィンドウは 3 つのタブで構成されています。

Current File(現在のファイル)

ここでは、Rider のコード解析が現在作業中のファイルで検出したすべてのエラー、警告、提案、およびヒントが表示されます。 これは IntelliJ ベースの IDE と同じ動作であり、縦スクロールバーの上にある Inspection(インスペクション)ウィジェットからこのタブを直接開くことができます。

Toolset, Environment(ツールセット、環境)

このタブには、ソリューションのロード動作や NuGet の復元プロセスなどに関連するすべての診断情報とメッセージが集約されます。 問題ごとに、適切な説明と対応する修正リスト(存在する場合)が提示されます。 従来はこのような診断メッセージの詳細を確認する場合、Event Log(イベントログ)ツールウィンドウを開く必要がありました。

All Solution Files(すべてのソリューションファイル)

これは SWEA ツールウィンドウの新しい場所です。 ここには、 Solution Wide Error Analysis(ソリューション全体のエラー解析)で見つかった全ソリューションのすべてのエラーが表示されます。

新しい Bookmarks(ブックマーク)ツールウィンドウ

新しい Bookmarks(ブックマーク)ツールウィンドウを導入しました。これと非常によく似た Favorites(お気に入り)ツールウィンドウは、新しいツールウィンドウに置き換えられる予定です。

Rider でブックマークを追加すると、デフォルトでは Bookmarks(ブックマーク)ツールウィンドウ内のプロジェクトと同じ名前を含むノード内に追加されます。 新しいブックマークを追加するたびに、このノードのリストの上部にブックマークが表示されるようになります。 また、新しいノードを作成して、項目をドラッグアンドドロップすることも可能です。

デバッガー

Debug(デバッグ)タブの新しい UI

Debug(デバッグ)タブの UI が新しくなりました! ご紹介すべき変更点はたくさんあります。

デフォルトでは、Threads & Variables(スレッドと変数)、Console(コンソール)、および Debug Output(デバッグ出力)の 3 つのタブがあります。 Memory(メモリ)や Parallel Stacks(並列スタック)などの他のタブは非表示になっていますが、右端にある歯車アイコンの Options Menu(オプションメニュー)から表示させることができます。

左側のツールバーを完全に除去し、そこに含まれていたアイコンを上部のツールバーかコンテキストメニューに移動しました。 上部のツールバーをできる限りコンパクトにするため、アイコンセットを整理して最も重要なアクションのみを表示するようにしました。 残りのアイコンは、More(その他)ドロップダウンメニュー(縦三点リーダー)に移動されています。 Hide Frames from Libraries(フレームをライブラリから非表示)アイコンと Hide/Show Threads(スレッドを非表示/表示)の切り替えは、Threads(スレッド)ビューのコンテキストメニューに移動されました。

More(その他)ドロップダウンメニューには、新しい Settings(設定)サブメニューがあります。 このサブメニューにはデバッガーに関連する最も一般的な設定を含む短いリストがあるため、Settings(設定)/Preferences(環境設定) ダイアログに移動し、Build, Execution, Deployment(ビルド、実行、デプロイ)| Debugger(デバッガー)ページにドリルダウンして検索する必要がなくなりました。

Immediate(イミディエイト)ウィンドウへの更新

maximized(最大化)と minimized(最小化)の 2 つのレイアウトが用意されています。 最小化レイアウトでは、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.Func または System.Action)を作成する際に、デリゲートがラップするメソッドまたはラムダ式に簡単に移動できます。 Variables(変数)リスト内にあるデリゲートのノードについては、Navigate(移動)リンクをご覧ください。

ラムダ式を使用して event handler (delegate) を作成する場合、新しいビジュアライザーを使用してサブスクライバーとキャプチャされたオブジェクトをより詳しく調べられます。

event handler に、Captured variables(キャプチャされた変数)サブノードを含む Subscribers(サブスクライバー)ノードが追加されました。 イベントがサブスクライブしている場所に素早く移動できるよう、サブスクライバーごとに新しい Navigate(移動)リンクを追加しました。

コード解析

C# 10

Rider では継続的に C# 10 関連の機能が追加されています。 このリリースでは、ファイルスコープの名前空間、グローバル using、CallerArgumentExpression 属性、「補完された文字列ハンドラー」の概念、および C# 10 のラムダを新たにサポートしています。

ファイルスコープの名前空間から説明しましょう。 新しい構文自体のサポートのほかに、ユーザーが希望するスタイルを選択できる新しい構文スタイルオプションを追加しました(Settings(設定)/Preferences(環境設定)| Editor(エディター)| Code Style(コードスタイル)| C# | Syntax Style(構文スタイル)| Code body(コード本体)| Namespaces(名前空間))。 スタイルを選択すると、Rider がそのスタイルに合わせて変更する必要のあるコードのインスペクションを表示し、適切なクイックフィックスを提案します。 この修正は、プロジェクト全体だけでなくソリューション全体にもワンクリックで反映させることができます。

コードを以前の構文スタイルに戻すための Convert to file-scoped namespace(ファイルスコープの名前空間に変換)および Convert to block-scoped namespace(ブロックスコープの名前空間に変換)という 2 つのコンテキストアクションが追加されました。

詳細: ファイルスコープの名前空間

では、グローバル using を簡単に見てみましょう。 Rider のコード解析は global キーワードが付いた using を認識し、それを使用してプロジェクト内のすべてのコードファイルにあるシンボルを正しく解決します。 また、Rider はグローバル using がファイル内で誤った場所に配置されている場合にそれをユーザーに通知します。

Rider はプロジェクトで使用されていないグローバル using を未使用としてハイライトし、そのステートメントを除去するためのクイックフィックスを提供します。

Rider は CallerArgumentExpression 属性を手厚くサポートしており、この属性の適切な使用を支援するコード補完とコードインスペクションも備えています。

詳細: CallerArgumentExpression

C# 10 には「補完された文字列ハンドラー」という新しい概念が導入されています。 エンドユーザー側では、これは文字列補間式が全般的に .NET 6 でより高速に動作し、新しいハンドラーによって補間の中で Span<char> 値を使用できるようになることを意味しています。 ライブラリ作成者側では、この機能を使用して文字列補間式が文字列に変換されるかどうかを制御できます。 Rider 2021.3 はライブラリコード内の「補間された文字列ハンドラー」パターンを認識し、より多くの場所で文字列補間式を使用して安全に提案できるようになりました。

Rider は record 構造体を readonly としてマークすることを提案することで、それらのパフォーマンスを最大限に引き出せるようにします。 型宣言が修飾子によって無駄に読みにくくならないように、このインスペクションは record 型に変更されないインスタンスメンバーがあり、setter による変更がソリューションにない場合にのみ表示されます(ソリューション全体解析が有効である必要があります)。

C# 10 では、オブジェクトパターンのネストの代わりにドットアクセスを許可することで、パターンマッチング構文をわずかに単純化できます。

Rider は、これに対応するクイックフィックス付きのインスペクションと、クイックフィックスを元に戻すコンテキストアクションを提供します。

その他の重要な変更点:

  • C# 10 ラムダのサポートを改善しました。.NET 6 Minimal API プロジェクトでは、赤文字のコードや誤検出エラーのいずれも発生しないと思われます。 さらに、Rider では正しい構文を使用しやすくなり、コンパイラーが期待する場所に丸括弧を追加できるようになっています。
  • Rider がトップレベルのステートメントを含むコードの有効な生成クラス名として Program をサポートするようになりました。
  • インターフェースで静的抽象メンバーの初期サポートが提供されています。 コード解析はこの構造を有効とみなすため、赤文字のコードを処理する必要はもうありません。 Generate missing members(欠落しているメンバーの生成)機能は、静的抽象メンバーを認識し、それらを正しく処理します。 このリリースには継承ガターマークも含まれており、基本/派生シンボルに移動できるようになっています。

null 許容参照型

stackoverflow.com のような外部リソースからコードをコピーすることはよくあります。 最近では、null 許容参照型を C# で利用できるため、一部のコードサンプルにはすでに NRT 構文が含まれています。 しかし、ソリューションで NRT が有効になっていない場合はどうでしょうか。 Rider には、このようなコードをプロジェクトに貼り付けた後に、この構文を取り除きやすくする Replace with JetBrains.Annotations attributes(JetBrains.Annotations 属性に置換)と Remove nullable annotations without ‘#nullable’ context(‘#nullable’ コンテキストのない null 許容アノテーションの除去)という 2 つの新しいクイックフィックスが用意されています。

型の引数と null 許容性制約で null 許容性が一致しないことがあります。 このような場合のために、以下を含むクイックフィックスが追加されました。

  • null 許容アノテーションを型引数から除去する。
  • notnull 制約を型引数から除去する。
  • 型パラメーターで null 許容値を許可する。
  • 型引数として使用される型パラメーターで null 許容値を許可しない。

ファイル、プロジェクト、またはソリューション全体で null 許容のデフォルト値を使用してパラメーターのアノテーションを修正するための一括クイックフィックスを使用できます。

また、メソッド内の null がチェックされる場合に、パラメーターを null 許容にする新しい一括クイックフィックスも追加されています。

C# コード解析

クロージャ付きの静的なローカル/匿名関数に対応する新しいクイックフィックスとコンテキストアクションをいくつか追加しました。

  • 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 式を含むメソッド。
  • null 許容参照型が無効になっている状態で大量の型チェックを含んでいるメソッド。
  • null 許容参照型が有効になっている状態で大量のインデクサーアクセスを含んでいるメソッド。
  • null 許容参照型が有効になっている状態で大量のクロージャを含んでいるメソッド。

SQL 言語インジェクション

SQL 言語インジェクションのサポートを改善しました。 SQL コードを C# コード内に直接記述するような多数の一般的なケースをサポートするようになりました。

string.Format メソッド、文字列補間、および単純な文字列連結に関し、SQL クエリ文字列が正しく解決されるようになりました。

SQL クエリ文字列に含まれるパラメーターの SQLParameter 変数が Microsoft SQL Server ダイアレクトまたは Dapper ライブラリで使用される場合にエラーが発生しなくなりました。

ゲーム分野

Unity

このリリースでは、Rider のアセンブリ定義ファイルのサポートに大幅な更新が行なわれています。 Ctrl + クリック で参照に移動したり、プロジェクト全体や参照パッケージ内でアセンブリ定義の使用箇所を検索したり、アセンブリ定義の名前を変更したり、新しい参照を追加する際に補完を利用したりできます。

Rider は GUID ベースの参照にも対応しており、ターゲットアセンブリ定義を示す便利なヒントを表示したり、Alt + Enter アクションで名前付きと GUID ベースの参照を相互に変換したりできます。

Rider がアセンブリ定義ファイルで満たされていない「define constraints(制約の定義)」をハイライトするようになりました。 これにより、アセンブリが除外された理由がわかりやすくなります。 define シンボルも補完されます!

version defines のセットアップもさらに簡単になりました。パッケージ名の補完と現在インストールされているバージョンに対応したインレイヒントを使用できます。 また、条件が満たされていないシンボルもハイライトされます。

Rider がパッケージのコンパイル時に定義されたシンボルに関する情報を提供する特殊なコンテキストで、参照先 Unity パッケージのソースファイルを表示するようになりました。 つまり、ソースファイルは正しいプリプロセッサー分岐がハイライトされた状態で表示されます。

Unity の [Tooltip] 属性は、フィールドを編集中に Inspector が表示できるテキストを提供します。 また、Rider はシリアル化フィールドを使用している場合にこのテキストを Quick Documentation(クイックドキュメント)ポップアップの一部として表示します。 XML ドキュメントからのツールチップ作成、およびツールチップからの XML ドキュメント作成を行なう新しいコンテキストアクションも追加されています。

Rider の USB を介した iOS デバイスのデバッグが Apple Sillicon でサポートされるように更新されており、このリリースでは新たに Linux での動作もサポートされています。

アセットインデックスが参照先のパッケージを確認するようになり、Rider がパッケージ内のアセットに基づいてプレハブ内のコード使用箇所を検索できるようになりました。

メタファイルの追跡が完全に書き直され、より多くのユースケースを処理できるようになっています。 Unity Explorer(Unity エクスプローラー)ツールウィンドウでのファイルの追加、除去、名前変更、移動、またはリファクタリングがシームレスに動作するはずです。

このリリースでは、ファイルが特定の種類の外部アプリで更新される際にアセットインデックスを更新する、Apple Silicon で Unity のファイルを開く、Burst コンパイラーでの変更に合わせて Burst 解析を更新するなど、数多くの通常の修正も提供されています。 また、インストールされている Unity のバージョンを検索し、Unity ログビューアーツールウィンドウを更新する際の Rider のパフォーマンスも改善しています。

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 をターゲットするアプリケーションで機能するようになりました。 XAML コードに適用する変更の結果を直接 Rider でプレビューすることができます。

Xamarin

  • Plist editor(Plist エディター)で標準の Xcode スキームをサポートしました。 これにより、plist に新しいキー追加する際に Rider がキーのフレンドリ名、キーの型に従った値の検証、および潜在的なキーのリストを提供しやすくなりました。 このスキームは、macOS と Windows の両方で機能します。
  • Android コンポーネントを NuGet パッケージとしてエディターから直接ダウンロードできるようになりました。
  • プロジェクトがサポートしている場合、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(フォーマッター)タブを使用します。

その他の改善

Solution Explorer(ソリューションエクスプローラー)ツールウィンドウでは、Reformat and Cleanup(整形とクリーンアップ)機能は複数の選択したファイルとディレクトリに使用可能です。

フォーマッターに以下の新しいオプションを追加しました。

  • if()while() などのステートメント条件内にあるラムダまたはプロパティパターンの波括弧をインデントするオプション。
  • if()foreach() などの丸括弧内のステートメント条件を整列するオプション。 デフォルトでオンになっています。
  • x is Foo or Bar or Baz のようなバイナリパターンの折り返し、切り捨て、整列、およびインデント解除を行なうオプション。

.NET 5 SDK より、グローバル AnalyzerConfig ファイルを使用して Visual Studio のアナライザーオプションを構成できるようになりました。 Rider 2021.3 はこれらのグローバル AnalyzerConfig ファイルからコードスタイル情報を読み取り、それを使用して Rider のルールを調整することができます。

ウェブ開発

依存関係アップデート用の新しいインスペクション

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.config または Web.config ファイルにそれを追加します。

バインディングリダイレクトは、NuGet パッケージがインストールまたはアップデートされると生成されますが、 Solution Explorer(ソリューションエクスプローラー)ツールウィンドウ内のプロジェクトのコンテキストメニューにある Tools(ツール)| Generate Binding Redirects(バインディングリダイレクトを生成)を使用して、いつでも手動でバインディングリダイレクトを生成するよう Rider に指示することも可能です。

プロジェクトの Properties(プロパティ)ページの Applications(アプリケーション)タブに Auto-Generate Binding Redirects(バインディングリダイレクトの自動生成)プロパティが新たに追加されました。 このプロパティは、App.config ファイルにリダイレクトがなかった場合、プロジェクトをビルド中にバインディングリダイレクトを生成するよう MSBuild に要求するものです。

バインディングリダイレクトのサポートを開始したほか、小規模な UX の改善も行ないました。 Solution Explorer(ソリューションエクスプローラー)ツールウィンドウから直接 NuGet パッケージをアンインストールできるようになりました。

Apple Silicon のサポート

このリリースより、Apple Silicon プロセッサーを搭載した Mac で Rider がネイティブで動作するようになりました。 Rider 2021.3 では以下のランタイムを使用します。

  • フロントエンド用 Apple Silicon 対応 JetBrains Runtime
  • バックエンド用 .NET6 RTM

x64 から ARM64 への変換がなくなりました! Rider が Apple チップで非常に高速に動作するようになりました!

F# のサポート

最大のニュースは、Rider が正式に F# 6 をサポートするようになったことです! このリリースでは、コード補完、リファクタリング、およびナビゲーションの品質に関する多数の更新と F# 言語サポートに関するさまざまな改善も含まれています。

Introduce Variable(変数の導入)リファクタリングに強力な更新が行われました。 必要な場合にタプルと単一ケースの union 型の分解を提案し、計算式で計算型の使用も提案するようになっています。 また、適切な場合に use および use! キーワードを推奨し、追加されるバインディングの配置を改善しました。

このリリースには、候補表示順の改善や最初のコンテキストベースのキーワードフィルタリング(一部のキーワードが適切でない場合に表示されなくなりました)など、コード補完に関する更新が多数含まれています。 外側の関数に戻って手動で rec を追加する必要がなくなったため、F# 関数の反復使用がより簡単になっています。

コード補完にはもうひとつ重要な更新があります。 union ケースパターンを補完する際、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

Covering tests(コードのカバー)という新しい Code Vision メトリクスが追加されています。 このメトリクスは Rider にプロジェクトのカバレッジ情報があり、メソッド(またはプロパティ、インデクサー、またはイベント)が少なくとも 1 つのテストでカバーされている場合に表示されます。

このメトリクスは、Settings(設定)/Preferences(環境設定)| Editor(エディター)| Code Vision ページで有効または無効にできます。

コードエディターの左側にあるカバレッジ行をクリックすると表示されるポップアップウィンドウから、ユニットテストを開始できるようになりました。

dotTrace
dotUltimate

dotTrace プラグインを使用すると、macOS と Linux で非同期呼び出しのデータを収集できます。 このデータを取得するには、Timeline(タイムライン)プロファイリングモードを使用してください。 Call Tree(呼び出しツリー)には、awaitcontinuations を含む非同期呼び出しが表示されます。

dotTrace プラグインで Timeline プロファイリングモードを使用する際、macOS と Linux のアプリケーションの子プロセスをプロファイリングできるようになりました。 これは、.NET 5 以上のアプリケーションでのみサポートされています。

ナビゲーションと Find Usages(使用箇所の検索)

新しいガターマーク

クラス、インターフェース、または構造体の継承構造内を素早く移動しやすくするため、さらにガターマークをいくつか追加しました。 新しい ↑O および ↑I アイコンは、コードエンティティが別のクラスまたはインターフェースを継承または実装していることを示します。 このコードエンティティの継承が複雑である場合にアイコンを選択すると、その上のすべての祖先が継承階層のトップまでメニューに表示されます。 クラスがインターフェースとクラスを同時に実装または継承している場合、Rider はガターに ↑IO アイコンを表示します。

また、このリリースではクラスメンバーのガターマークをデフォルトで有効にしています。 クラスメンバーが派生クラスでオーバーライドされている場合、Rider はクラスメンバーの横の左ガターに ↓O アイコンを追加します。 アイコンをクリックすると、以下が行われます。

  • このメンバーをオーバーライドしている派生クラスのメンバーに移動します。
  • このメンバーをオーバーライドしている他のクラスのクラスメンバーのリストがメニューに表示されます。

ユーザー定義の暗黙的な変換演算子に対応した Find Usages(使用箇所の検索)

ユーザー定義の暗黙的な変換 operators に対し、Find Usages(使用箇所の検索)を呼び出せるようになりました。 この機能の実装は、型変換ヒントに使用されているメカニズムに基づいています。

このため、ユーザー定義の暗黙的な変換 operators の使用状況を調べ、変換のあるコードブロックに移動することができます。

ただし、このアルゴリズムは高速ではないため、計算と検索結果の表示にしばらく時間が掛かる場合がありますのでご注意ください。

データベースのサポート

データエディターの集計

範囲選択したセルを集計する Aggregate(集計)ビューを表示する機能を追加しました。 データ管理に役立ち、余計なクエリを書く手間を省ける待望の機能です! この機能追加により、データエディターに Excel や Google スプレッドシートにより近い性能と使いやすさが備わりました。

ビューで表示するセル範囲を選択し、右クリックして Show Aggregate View(集計ビューの表示)を選択してください。

DDL データソースと実際のデータソースのマッピング

このリリースは、実際のデータソースに基づいて DDL データソースを生成する機能を導入した過去のリリースを必然的に引き継いでいます。 このリリースでは、このワークフローが完全にサポートされています。 以下の操作を実行できます。

  • 実際のデータソースから DDL データソースを生成する: DataGrip 2021.2 の発表をご覧ください。
  • DDL データソースを実際のデータソースにマッピングします。
  • これらのデータソースの比較と同期を双方向で行います。

念のために説明しておきますが、DDL データソースはある SQL スクリプトのセットに基づくスキーマを含む仮想データソースです。 これらの SQL スクリプトファイルを VCS に格納すると、バージョン管理システム(VCS)でデータソースを管理することができます。

データ構成プロパティに DDL mappings(DDL マッピング)という新しいタブを追加しました。このタブでは、どの実際のデータソースをどの DDL データソースにマッピングするかを定義できます。

新しい Database Diff(データベース差分)ウィンドウ

新しい Database Diff(データベース差分)ウィンドウがコンテキストメニューから使用できるようになりました。 このウィンドウにはより優れた UI が備わっており、右側のペインには同期を実行した後に得られる結果が明確に表示されます。

右側のペインには、発生しうる結果を色で示した凡例が表示されます。

  • 緑、斜体: オブジェクトが作成されます。
  • グレー: オブジェクトが削除されます。
  • : オブジェクトが変更されます。

結果スクリプトは Script preview(スクリプトのプレビュー)タブに表示されます。この結果スクリプトは新しいコンソールで開くことも、このダイアログから実行することもできます。 このスクリプトを実行すると、右にあるデータベース(ターゲット)を左にあるデータベース(ソース)のコピーにする変更が適用されます。

Script preview(スクリプトプレビュー)タブに加えて、下のペインに Object Properties Diff(オブジェクトプロパティ差分)タブと DDL Diff(DDL 差分)タブがあります。 これらのタブには、元のデータベースとターゲットデータベースに含まれるオブジェクトの特定バージョン間の差分が表示されます。

その他

Project Properties(プロジェクトプロパティ)

このリリースでは、Project Properties(プロジェクトプロパティ)ダイアログに新しい設定がいくつか追加されています。

  • Application(アプリケーション)ページの Resources(リソース)セクションで、アプリケーションアイコンをカスタマイズできるようになりました。
  • ビルド前後に実行するコマンドを指定できる新しい Build Events(ビルドイベント)ページが追加されました。
  • Inspections(インスペクション)ページには、コード解析に関連する Localizable(ローカライズ可能)、Localizable inspector(ローカライズ可能なインスペクター)、および Solution-Wide inspections(ソリューション全体のインスペクション)という新しいプロジェクトプロパティが追加されています。
  • プロジェクトの参照パスを Reference Paths(参照パス)ページで構成できるようになりました。
  • Applications(アプリケーション)タブに Auto-Generate Binding Redirects(バインディングリダイレクトの自動生成)という新しいプロパティが追加されています。 Binding Redirects(バインディングリダイレクト)についての詳細は、上記の「NuGet Support(NuGet のサポート)」セクションをご覧ください。

Solution Properties(ソリューションプロパティ)

Solution Properties(ソリューションプロパティ)ダイアログのテーブルに、プロジェクトごとにビルト依存関係を指定するための Dependencies(依存関係)列が新たに追加されました。 一部のプロジェクトは、循環依存関係を防止するために選択できないようになっています。

Run configurations(実行構成)

バージョン 2021.3 以降の Rider は、プロジェクトがロードされる際に Properties/PublishProfiles からすべての .pubxml ファイルをインポートし、実行構成に変換します。 新しい .pubxml ファイルを追加するたびに、新しい実行構成が自動的に生成されます。 そのため、手動で実行構成を作成する必要がなくなりました!

アプリケーションを実行するランタイムを指定するための明示的なランタイムセレクターが追加されています。 このリストは使用中のオペレーティングシステムによって変化しますが、全リストには、.NET/.NET Core.NET Framework、および Mono が含まれています。

コード補完での EditorBrowsable 属性のサポート

コード補完リストを調整し、EditorBrowsable 属性に従って項目をフィルタリングできるようになりました。 Preferences(環境設定)| Editor(エディター)| General(一般)| Code Completion(コード補完)ページの Filter members by EditorBrowsable attribute(EditorBrowsable 属性でメンバーをフィルター)で希望する動作を選択するだけです。

すべてのタブのフォントサイズを変更

ご要望にお応えし、同時に開いているすべてのタブのフォントサイズを + マウスホイール(macOS)または Ctrl + マウスホイール(Windows、Linux)で変更できるようにしました。 この機能を有効にするには、Preferences(環境設定)/ Settings(設定)| Editor(エディター)| General(一般)に移動し、Change font size with Command + Mouse Wheel in(Command / Ctrl + マウスホイールで次の場所のフォントサイズを変更する)を選択して All editors(すべてのエディター)を選択します。 Active editor(アクティブなエディター)を選択している場合、このショートカットは現在作業中のファイルのフォントサイズのみを変更します。