ReSharper 2025.2 のリリースでは、パフォーマンスの大幅な改善、魅力的な新しい言語機能の追加、さらには全面的な開発者生産性の強化が行われています。 また、Out-of-Process(アウトプロセス、OOP)モードがプレビューで提供され、C# 14 と C++ のサポートが拡充されており、これまで以上に現代的で信頼性の高いコードの作成を可能になっています。
ReSharper 2025.2 は、ReSharper を Microsoft Visual Studio のアウトプロセス(OOP)で実行できる最初の安定版リリースです。 この待望のアーキテクチャ変更により、ReSharper のプロセスを Visual Studio から分離し、今後のさらなる安定性向上とパフォーマンス向上の基盤を築くことができました。
Out-of-Process モードに切り替えるには、ReSharper の Options | Environment | Products & Features(オプション|環境|製品と機能) へ移動し、Run ReSharper in separate process(ReSharper を別のプロセスで実行する) オプションを選択してください。 変更を適用した後、IDE を再起動することなく ReSharper を再初期化するには、Save and restart(保存して再起動)ボタンをクリックしてください。
ReSharper 2025.2 では、ソリューションを開いた直後から Ctrl+T を使ってファイル間を移動できるため、インデックス作成の完了を待つ必要はありません。
メモリ負荷を軽減し、_ViewImports や _ViewStart などのインクルードファイルに対する過剰な処理をなくしました。 Razor コンポーネントの型に対する Find Usages(使用箇所の検索)が高速化され、いくつかの誤警告も解消されました。
Rename(名前の変更)リファクタリングが以前よりも大幅に高速化され、分かりやすくなりました。 バリデーションフェーズを並列化し、リファクタリングの進捗をより透明化するとともに、メモリ使用量を削減しました。
インプレースリファクタリングのパフォーマンスへの影響を軽減し、入力操作への干渉を最小限に抑えることで、全体的なエディターの使い心地を向上させました。
インデックス作成時に継続的なディスク操作を発生させていた既存のロジックを削除することで、ReSharper がモダンな SSD を十分に活用できるようにしました。 このロジックは本来は HDD 用に最適化されていたものですが、SSD には HDD の物理的な制限がなく、高スループットの並列 I/O 操作が可能であるためです。 この変更とバックグラウンド処理の最適化により、モダンなハードウェアでのインデックス作成と起動が若干高速化しました。 ソースジェネレーターへの参照を含むプロジェクトでのソリューションの読み込みも改善されています。
これらのパフォーマンス改善の全貌については、 公式ブログで詳細をご確認ください。
ReSharper が Visual Studio Code の拡張機能としても提供されるようになりました。 ワークフローに Visual Studio Code を取り入れている方は、使い慣れた ReSharper の機能をエディター内で直接ご活用いただけます。 コードインスペクション、クイックフィックス、移動操作、Rename(名前の変更)リファクタリングは、すべて同一の基盤となるエンジンによってサポートされています。
パブリックプレビュー期間中は VS Code 向け ReSharper を無料でご利用いただけます。
ReSharper 2025.2 は、C# 14 に追加された最新機能に対する初期サポートを提供しています。
ReSharper はコード補完、コード解析、Find Usages(使用箇所の検索)、Rename(名前の変更)リファクタリングなどの機能を提供することで、C# 14 で導入された拡張メンバーを早期にサポートしています。
C# 14 の部分イベントと部分コンストラクターにより、ソース生成の可能性が広がり続けています。 ReSharper がこのような新たなユースケースにも対応するように更新されました。
ReSharper 2025.2 では新しい a?.b = c パターンと a?[i] = c パターンを使用してコードを単純化しつつ、潜在的な null 値を安全に処理できます。
ReSharper が C# 14 で導入されたユーザー定義の複合代入演算子を正しく理解し、処理できるようになりました。
ReSharper が新しい #! および #: プリプロセッサディレクティブを認識するようになりました。
LoggerMessage によるログ記録の改善 ReSharper 2025.2 では、ILogger を使用して効率と保守性に優れたログ記録のコードを作成できるようにするための複数の改善が行われています。
LoggerMessage が生成するメソッドに変換する新しいリファクタリングオプション ReSharper が ILogger に対するメソッド呼び出しを LoggerMessage ベースのメソッドに自動的に変換できるようになりました。 これにより、特に高スループットのアプリケーションで実行時のオーバーヘッドが減少し、パフォーマンスが改善されます。
ILogger<T> のコード補完 ReSharper で ILogger<> を書く際、現在の型が山括弧内の補完候補として表示されるようになったため、準備時間を節約できるようになりました。
[LoggerMessage] 属性パラメーター名の処理の改善 ReSharper が [LoggerMessage] 属性のパラメーター名を補完する便利な機能を提供し、対応するパラメーター名が変更された際にコードを正しく更新できるようになりました。
LoggerMessage の使用に関する新しいインスペクション ReSharper が [LoggerMessage] 属性の欠落しているパラメーターと重複するログ項目を検出し、これらの問題を解決するクイックフィックスを提供するようになりました。
ReSharper が範囲インデクサーを使用できる状況をより多く認識するようになりました。たとえば、s.Substring(a, b - a) の代わりに s[a..b] を適切な場合に提案します。
ReSharper が範囲式の冗長な境界をより効果的に識別するようになり、より明確で信頼性の高いスライス操作が可能になりました。
ReSharper と Roslyn のインスペクション設定との統合がより緊密化され、#pragma でインスペクションの有効状態を切り替える機能と Roslyn の重大度の構成がサポートされるようになりました。
インプレースリファクタリングがインレイヒントに表示されるようになりました。これにより、リファクタリングが分かりやすくなり、JetBrains IDE との一貫性が確保されました。 インレイヒントの外観は、ReSharper | Settings(設定)| Environment(環境)| Editor(エディター)| Appearance(外観)で構成できます。
専用のコンテキストアクションを使用することで、メソッドをローカル関数に素早く変換し、コードの構造と可読性を改善できるようになりました。
ConstantExpected 属性のサポート ReSharper が [ConstantExpected] 属性が指定されているパラメーターに定数でない値が渡される場合に警告を示し、捉えにくいバグを回避しやすくします。
switch アームの新しいインスペクション ReSharper が重複する switch アームを検出し、そのようなアームをマージしてコードをより簡潔にするクイックフィックスが導入されました。
モダンな C++ 開発に対応するため、ReSharper 2025.2 では以下の機能強化が追加で行われています。
#if でブロック化されたコードを編集する際、アクティブなビルド構成を切り替えなくてもコーディング支援機能を全面的に使用できるようになりました。#pragma ディレクティブにおける変数参照のサポート、およびその他の新しいコーディング支援機能を追加しています。C++ 関連の更新の詳細については、ReSharper C++ 2025.2 の新機能ページをご覧ください。
2025.2 のリリースに伴い、Visual Studio 用 TeamCity 拡張機能のサポートを終了することになりました。
この変更は、ツール群を合理化し、最も影響の大きな開発者エクスペリエンスに注力するための継続的な取り組みの一環です。 当社はこの変更が一部のワークフローに影響する可能性があることを理解していますが、この決定により、最終的には当社が提供するツール全体にわたるパフォーマンスが改善され、エコシステムの持続可能性が向上すると考えています。
ReSharper 2025.2 では、コマンドクエリ責任分離(CQRS)パターンの適用を支援する実験的なインスペクションがいくつか導入されています。 これらのインスペクションは、命名の不一致、コンテキストの重なり、およびアノテーションと名前の競合を検出します。 冗長な属性の除去や規則に準拠したエンティティ名の変更を行うクイックフィックスが提供されています。
CQRS 検証はデフォルトでは無効化されており、Options(オプション)| Code Inspection(コードインスペクション)| CQRS Validation(CQRS 検証)で有効化できます。 必要なアノテーションは、JetBrains.Annotations で提供されています。