ReSharper 2020.3 ヘルプ

ReSharper を高速化 (と Visual Studio)

Visual Studio にインストールされている ReSharper には、2 つの主要なパフォーマンス上の問題があります。

  • システムが要件を満たしていません。この場合、問題に対処するための最初のステップとして、システムをアップグレードすることをお勧めします。
    ReSharper が最新のハードウェアで正常に動作し、調整なしで中規模および大規模のソリューションで動作することを常に確認しています。Visual Studio 開発者は同じことに取り組んでいると信じています。
    一部の機能を無効にして古いハードウェアで ReSharper を高速化しようとすると、開発パフォーマンスを高速化できる優れたツールが失われます。

  • 同じ 32 ビットプロセスを共有する Visual Studio と ReSharper は、システムを限界まで押し上げます。多くの場合、これは大規模なソリューションで発生し、ReSharper が Visual Studio v. 2015 以降にインストールされている場合に発生すると報告されています。
    この場合、システムが要件を満たしていれば、ほとんどの場合、以下のチェックリストがパフォーマンスの問題の修正に役立ちます。

大きなソリューションを初めて開くのにかかるかなりの時間(数分まで)は、問題の兆候ではありません。ReSharper は、ソリューションのモデルを構築してキャッシュし、ソリューションのほぼすべての機能で使用されます。コード分析だけでなく、ナビゲーションと検索コード補完ユニットテストなどにも使用されます。
このソリューションを後で開いても、インデックスの結果はハードドライブにすでにキャッシュされているため、大幅な遅延は発生しません。
ReSharper は最初の起動時にアセンブリアノテーションを処理するため、ReSharper キャッシュクリーンアップしても、その後の起動は速くなることに注意してください。

最初に試してみてください

パフォーマンスの問題の最も一般的な原因は、次のアクションで取り除くことができます。

  • ReSharper | オプション | 環境 | パフォーマンスガイドに移動して、パフォーマンスに影響する ReSharper および Visual Studio 環境設定を確認してすばやく修正します。

  • ソリューション全体の分析を使用しない場合は、それを無効にするか、ソリューション全体の分析で警告を無効にすることを検討してください。無効になっていても、ソリューション全体でコードインスペクションを実行すると、いつでもソリューション内のすべてのコード問題を見つけることができます。ソリューション全体の分析を設定するには、ReSharper | オプション | コードインスペクション | 設定にアクセスしてください。

  • Visual Studio オプションで、ソース管理 | プラグインの選択に移動します。ソース管理プラグインとしてなしを選択します。これにより、Git または別の VCS プロバイダーがオフになり、全体的なパフォーマンスが向上します。

ハードウェアチェックリスト

  • ハードウェア割り込みと DPC がないことを確認します(通常、悪いドライバや仮想化によって引き起こされます)。

  • ハードドライブが断片化していないことを確認してください。

  • ページファイルが 1GB 以上であることを確認してください。

  • 空きディスク容量が 15% 以上であることを確認してください(MFT の断片化 / スペース不足リスク)。

  • 4GB 以上の空き容量があることを確認してください。

  • SSD にソリューションと ReSharper キャッシュを保存すると、RAM ディスクが大きな違いにはなりません。

推奨システムソフトウェア調整

  • Microsoft が現在サポートしている Windows 版を使用する

  • Windows を最新の状態に保つ

  • 64 ビットオペレーティングシステムを使用する

  • devenv.exemsbuild.exe、プロジェクト / ソリューションフォルダー、および ReSharper キャッシュフォルダー(デフォルトでは %LOCALAPPDATA%\JetBrains\Transient および構成可能)を Windows Defender(およびその他のウイルス対策ソフトウェア)の無視リストに追加します。

  • 不要なサービスとプロセスを停止する

  • プロジェクト / ソリューションフォルダーと ReSharper キャッシュフォルダーを Windows インデックスから除外する

Visual Studio

Visual Studio の設定を調整する前に、最新の Visual Studio アップデート / サービスパック / ホットフィックスがインストールされていることを確認してください。

Visual Studio 設定を構成する

Visual Studio オプション(ツール | オプション)を開き、次のように環境設定を構成します。

  • 環境 | 一般 : クライアントのパフォーマンスに基づいて視覚体験を自動的に調整するを無効にし、リッチクライアントのビジュアル体験を可能にするを無効にし、可能であれば、ハードウェアグラフィックアクセラレーションを使用を有効にします。これらの調整により、UI の遅れが減少し、全体のパフォーマンスが向上します。

  • ソース管理 | プラグインの選択 : ソース管理プラグインになしを選択します。これにより、Git または別の VCS プロバイダーがオフになり、全体的なパフォーマンスが向上します。

  • 環境 | 始動 : 起動時に空の環境を表示し、コンテンツのダウンロードを無効にすることを選択します。開始ページとニュースチャンネルをオフにすると、起動時に時間がかかることがあります。

  • 環境 | AutoRecover : 自動復旧情報を保存するを無効にします。開いているドキュメントの現在の状態を常にコピーすることはクラッシュの場合に役立つかもしれませんが、大規模なソリューションでは、UI がフリーズするという代償を払う可能性があります(たとえば、ここのコメントを参照してください(英語))。この機能を無効にし、重要な変更の後にファイルを保存する習慣を身に付けることをお勧めします。

  • テキストエディター | 一般 : 変更を追跡するを無効にします。「変更の追跡」が有効になっている場合、Visual Studio は編集された行にガターハイライトを追加します。現在のファイルの編集が多すぎる場合、これらのハイライトを頻繁に再計算する必要があるため、エディターが遅くなる可能性があります。
    これは便利な機能ですが、特に大きなファイルを扱う場合は無効にすることをお勧めします。

  • テキストエディター | すべての言語 | スクロールバー : 垂直スクロールバーにアノテーションを表示するを無効にします。ReSharper は、右ガターまたは垂直スクロールバーを広範囲に使用して設計時インスペクション通知構造検索と置換の結果To-do 項目ファイル内のシンボルの使用箇所を表示します。Visual Studio もスクロールバーに多くの通知を表示し、Visual Studio と ReSharper が同じエラーを報告することがありますが、これは 2 回表示され、スクロールバーがマークで乱雑になることがよくあります。
    ReSharper マークが必要な場合は、Visual Studio アノテーションを完全にまたは部分的に無効にし、レンダリングしないことでパフォーマンス上の利点を得ることができます。
    または、スクロールバーの ReSharper のマークを無効にすることもできます。ReSharper | オプション | エディター | エディターの外観に移動し、マーカーバーを表示しないを選択します。

  • テキストエディター | すべての言語 | CodeLens : CodeLens を無効にします。CodeLens は、" IDE は基本的に、画面にスクロールするときに、各メソッドに対してすべての参照を検索操作を実行します。" であるため、大規模なソリューションのパフォーマンスに関する(英語)いくつかの考慮事項の 1(英語) つです。遅延に気付いた場合は無効にすることをお勧めします。
    CodeLens の一部の機能は ReSharper によって提供されます。たとえば、シンボル Alt+F7 のすべての参照または使用箇所をいつでもすばやく取得できます。

  • デバッグ | ジャストインタイム : スクリプトのジャストインタイムデバッグを無効にします。これにより、ビルドとデバッグが高速化されます。

  • Web フォームデザイナ | 一般 : Web フォームデザイナを無効にします。これにより、UI とエディターの遅延が減少します。

  • XAML デザイナー | 一般 : XAML デザイナーを無効にします。Visual XAML デザイナーは非常にリソース集約的な機能であることが知られています(英語)です。XAML フォームの視覚的表現なしで XAML コードを操作できる場合は、XAML デザイナーを無効にすることを強くお勧めします。

  • テキストエディター | [ 言語 ] | フォーマット : すべての自動フォーマット設定を無効にします。ReSharper のフォーマットアシスタントを使用すると、コードが 2 回再フォーマットされるのを防ぎ、編集の遅れを減らすことができます。

  • テキストエディター | C# : ファイル構造ウィンドウを使用している場合は、おそらくエディター上部のナビゲーションバーを使用しないで、このオプションページで安全に無効にすることができます。

  • テキストエディター | C/C++ | 詳細 : C/C++ コードを使用している場合は、IntelliSense | セマンティックカラー化を無効にする環境設定を True に設定します。これにより、大きなファイル内(英語)での入力エクスペリエンス(英語)が向上します。

  • テスト | 一般 : ReSharper の単体テスト機能を使用する場合は、リアルタイムでテストを発見... を無効にできます。

Roslyn の設定

Visual Studio ソリューションが大きくなると、同時に動作する 2 つのコード分析エンジン(ReSharper と Roslyn)が、共有する 32 ビットプロセスのメモリ制限に達する可能性があります。
次の記事では、Roslyn アナライザーのパフォーマンスとメモリ使用量を最適化するいくつかの方法について説明します: Roslyn: 大規模ソリューションのパフォーマンスに関する考慮事項(英語) .csproj、大規模ソリューション、メモリ使用量についてのストーリー (英語)

その他の Visual Studio の調整

  • Visual Studio から未使用のパッケージと拡張機能をアンインストールします。
    ここでメンションする価値があるのは、ReSharper と同様の機能を提供する、デフォルトで有効になっているものを含む Visual Studio 拡張機能があることです。

  • 一部のプロジェクトで作業していない場合は、Visual Studio からアンロードし、必要なときに再ロードできます。ソリューションエクスプローラーでプロジェクトまたはソリューションフォルダーを右クリックし、プロジェクトのアンロードまたはソリューションフォルダーのプロジェクトをアンロードするを選択します。これにより、全体的なパフォーマンスが向上します。

ReSharper

ReSharper の調整を開始する前に、最新バージョンを実行していることを確認してください。実行していない場合は、更新を検討してください。

ReSharper 設定を構成する

ReSharper にはさまざまな機能が用意されており、必要に応じて ReSharper オプションでほとんどの機能を無効にすることができます。一般的なルールは次のとおりです。パフォーマンスの問題がある場合は、使用しない機能を無効にします。

ReSharper オプション(ReSharper | オプション Alt+R O)を開き、次のように設定を構成します。

  • 環境 | エディター | Visual Studio の機能 : このオプションページでは、Visual Studio 2015 以降の同様の機能との統合を構成できます。Visual Studio バルブを隠すが選択され、Visual Studio バルブアクションを ReSharper アクションインジケーターにマージしますがクリアされていることを確認してください。ReSharper は、独自のアクションリストに統合された Visual Studio バルブアクションを表示できます。ReSharper は Roslyn に使用可能なアクションを要求する必要があるため、これはパフォーマンス面でコストがかかります。これにより、CPU とメモリの使用量が増加する可能性があります。
    Roslyn へのすべての要求はバックグラウンドスレッドで行われますが、顕著なパフォーマンスの問題がある場合は、Visual Studio アクションの統合をオプトアウトすることをお勧めします。

  • コードインスペクション | 設定 : このオプションページでは、コードインスペクションの様々な側面を無効にすることができます。これが無効にできるもため、無効になっている最小の機能から始めます。

    1. ソリューション全体の分析を使用しない場合は、それを無効にするか、ソリューション全体の分析で警告を無効にすることを検討してください。無効になっていても、ソリューション全体でコードインスペクションを実行すると、いつでもソリューション内のすべてのコード問題を見つけることができます。

    2. 最終的な手順は、コード分析を有効にするチェックボックスをオフにすることです。これにより設計時インスペクションが無効になりますが、必要なときに必要なスコープでコードインスペクションを実行できます。

  • コードインスペクション | 無視されたコード : このページでは、コード分析から除外するものを選択します。

    1. スキップする要素セクションでは、コードインスペクションで無視するファイルとフォルダーを指定できます。 Control+Alt+Shift+D8 を押して、現在のファイルを無視リストに追加することもできます。ショートカットをもう一度押すと、このファイルのインスペクションが再び有効になります。この操作に別のショートカットをバインドする場合は、Visual Studio オプションで ReSharper_EnableDaemon コマンドを探します。

    2. 変更されないサードパーティのコードまたは凍結されたコードを含むプロジェクトがある場合、これらのプロジェクト無視するプロジェクトセクションのインデックス作成から除外できます。

  • 環境 | 製品と機能 : ここでは、使用しない ReSharper 機能を無効にできます。例: ユニットテストチェックボックスをオフにすると、すべての ReSharper ユニットのテスト機能が無効になり、メモリが節約されます。

  • 環境 | 一般 : ソリューションのキャッシュを: セレクターで、「システム温度」または任意のカスタムフォルダーを選択します。ソリューションが VCS にない場合は、「ソリューションフォルダー」を選択することもできます。カスタムフォルダーを選択することをお勧めします。「ユーザーローカル設定フォルダー」 %LOCALAPPDATA% の問題は、ReSharper がこのフォルダーに書き込むときに、Visual Studio のディレクトリウォッチャーがトリガーされる可能性があることです。これは非常に頻繁に発生します。

  • 環境 | IntelliSense : タイピングの速度が遅くなる場合は、この設定を行う必要があります。コードインスペクションと同様に、ReSharper IntelliSense の特定の部分を無効にしたり、完全に無効にしたり、元の Visual Studio の IntelliSense にフォールバックすることができます。ここでは、無効にする機能を最小限に抑えてから、無効にすることができます:

    1. 環境 | IntelliSense | 補完外観 : メンバーの署名を表示するシンボルの種類を表示する要約を表示をクリアします。これにより、補完リストの構築が簡単になります。

    2. 環境 | IntelliSense | 一般 : 特定の言語用の ReSharper の IntelliSense(カスタム IntelliSense)をオフにするか、完全にオフにします(Visual Studio)。

  • 環境 | エディター | 振る舞い : 入力中のコードの再フォーマットを回避するために、セミコロンで自動フォーマットするおよび右波括弧で自動フォーマットするを無効にします。また、一部のタイピングアシスト機能をオフにする共通の言語固有のタイプミスを修正するを無効にします。これらのチェックボックスをオフにすると、入力が速くなります。
    C++ を使用する場合は、基本補完でインポート項目を表示する設定を無効にすることもできます。これにより、補完リストが簡略化され、その結果、入力時の遅延が減少します。

  • 環境 | エディター | 外観 : 現在行のハイライト一致する区切り文字をハイライトするを無効にします。これにより、UI とエディターの遅延の可能性を減らすことができます。

  • 環境 | 拡張機能マネージャー : 使用しない ReSharper 拡張機能を無効にします。

  • 環境 | インレイヒント | 一般 : インレイヒントを使用しない場合は、インレイヒントを有効にするチェックボックスをオフにして、インレイヒントサブシステム全体を無効にします。

  • ツール | ビルド | 一般 : ReSharper ビルドを使用するを有効にします。ReSharper のインクリメンタルビルドは、特に大規模ソリューションの場合、ビルド時間を大幅に短縮することができます。

  • コード編集 | コンテキストアクション : ここでは、役に立たないコンテキストアクションを無効にできます。

  • コード編集 | JavaScript | インスペクション : JavaScript を使用していてパフォーマンス上の問題がある場合は、コードのインスペクション時にプロパティのコンテキストを分析するオプションを有効にしないでください。

  • コード編集 | サードパーティコード : ここで、C++、JavaScript、TypeScript、CSS、HTML、JSON ファイル、フォルダー、ワイルドカードを追加して、「スキップ」または「ライブラリ」として扱うことができます。ReSharper は「スキップされた」ファイルを完全に無視し、「ライブラリ」ファイルを読み取り専用として扱います - ナビゲーション用にインデックスが付けられますが、インスペクションクイックフィックスリファクタリングはしません。

  • コード編集 | 言語インジェクション : このページでは、関心のない自動言語挿入を無効にできます。

複雑な UI コントロールを過度に使用しないでください

その他の調整

何も役に立たない場合

上記のすべてを試してもパフォーマンスが低下している場合は、一時的に ReSharper を無効にして、それが減速の原因であるかどうかを確認できます。ReSharper を無効 / 有効にするには、ツール | オプション | ReSharper にジャンプし、一時停止する / 今すぐ再開をクリックします。

ReSharper を一時停止するとパフォーマンスが向上するが、それでもコード解析コードのクリーンアップ、またはコードの再フォーマットに時々使用したい場合は、ReSharper のオンとオフをすばやく切り替えるショートカットが必要になる場合があります。これを行う方法は次のとおりです。ツール | オプション | 環境 | キーボードに移動して ReSharper_ToggleSuspended コマンドを見つけ、任意のショートカットを押して割り当てをクリックします。

Assigning a keyboard shortcut to suspend/resume ReSharper

既知のパフォーマンス上の問題

古いキャッシュ

ReSharper を最近更新し、以前のバージョンで開かれたソリューションでパフォーマンスの低下を観察した場合は、ReSharper キャッシュをクリアしてソリューション .suo ファイルを削除することで、スピードアップを図ることができます。

キャッシュをクリアするには、ReSharper | オプション | 環境 | 一般にジャンプし、キャッシュのクリアをクリックします。

JavaScript ファイルの作成

If you have some built JavaScript files (for example jquery.js ) in your solution, exclude these files from analysis by listing them under the ライブラリコード section on the コード編集 | サードパーティコード page of ReSharper options( Alt+R, O ).

互換性に関する既知の問題

その他の Visual Studio 拡張機能

主な互換性の問題は、以下の製品で確認されています。

  • DevExpress CodeRush / Refactor Pro (互換性なし)

  • Telerik JustCode (互換性なし)

  • Whole Tomato Visual Assist

  • 生産性のパワーツール

パフォーマンスの低下は、次の製品で確認されています。

  • StyleCop ReSharper プラグインの一部のバージョン

  • Visual Studio の PowerCommands

.cshtml ファイルの編集中に Web Essentials が低パフォーマンスに貢献したという報告もあります。この問題の影響を受ける場合は、ツール | オプション | Web Essentials にジャンプし、入力時に HTML を自動フォーマットするに設定することを検討してください。

Parallels Desktop for Mac

Parallels Desktop を使用して Mac 上の Windows 仮想マシンで Visual Studio を実行している場合、ReSharper IntelliSense リストのレンダリングは非常に遅いかもしれません。

セットアップでこれが発生する場合は、Coherence モードから全画面モードへの切り替えを検討してください。2 つのモード間の切り替えに関するガイドラインについては、この Parallels Knowledge Base のエントリ(英語)を参照してください。

関連ページ:

コード解析

ReSharper は、エディター内の単一のステートメントから、ソリューション全体のアーキテクチャまで、さまざまなレベルのコードを分析できます。コードの問題を見つける:ReSharper は、C#、VB.NET、XAML、XML、ASP.NET、ASP.NET MVC、Razor、JavaScript、TypeScript、HTML、CSS、ResX で 2500 を超えるコードインスペクションを適用することにより、静的コード分析(コードインスペクションとも呼ばれます)を提供します。スクリプト...

ソリューション全体の分析

ソリューション全体の分析では、プロジェクトのコンパイルを妨げないものを含め、サポートされているすべての言語でエラーが検出されます。プロジェクトにこのようなファイル(JavaScript、CSS、HTML など)が含まれている場合、ソリューション全体の分析は、それ以外の場合は実行時にのみ検出される可能性のあるエラーを見つけるのに役立ちます。ReSharper のソリューション全体の分析では、2 つの関連しているが異なる機能が実現します。ソリューション全体のエラー / 警告モニタ:ReSharper...

特定の範囲でコードの問題を見つける

設計時コードインスペクションは、エディターでコーディングしたり、特定のファイルを見直したりするときに役立ちます。ただし、ReSharper を使用すると、ソリューション全体または狭い範囲でスタティックコード分析を実行し、結果をフレンドリーな視点で調べることもできます。必要に応じてインスペクション結果を共有することもできます。Visual Studio および ReSharper を起動せずに、コマンドラインから特定のスコープ内のコードをインスペクションすることもできます。開始コードインスペクショ...

設計時にコードの問題を検出する

ReSharper は、エディターでコードファイルを開くとすぐに分析を開始し、最後まで編集を続けます。検出されたすべてのコードの問題は、重大度に従ってエディターでハイライトされます。問題のマップは、エディターウィンドウの右側のマーカーバーにも表示されます。ここでは、ファイルのステータスを即座に確認し、マークをクリックして特定のコードの問題に移動できます。また、JSLint、ESLint、TSLint から Javascript / Typescript コードの検証と修正をエディターで使用すること...

構造検索と置換

場合によっては、正規表現に一致する特定のシンボルやテキストの出現を検索するなどの標準的な検索方法では、目的の結果が得られない場合があります。例:プロジェクトに固有のコードの匂いを見つけたり、リファクタリングする必要があるコードを見つける必要があるかもしれません。ReSharper を使用すると、特定のパターンに一致するコードブロックを検索し、必要に応じて置き換えることができます。これらのブロックはまったく異なる場合があります。異なるタイプ、式、ステートメントなどを含むことができますが、論理的には...

予定リスト

ReSharper は、コード内のタスクと技術的負債を追跡する簡単な方法を提供します。特定のパターンに一致するコード項目(コメント、文字列リテラル、または識別子)は、To-do Explorer ウィンドウを使用して、エディターだけでなくソリューション全体でも簡単に見つけることができます。To-do コメントを追加したくない場合は、コード行をブックマークでマークすることを検討してください。To Do アイテムは、その種類(編集、通常、質問、警告、エラー)に応じて、エディターとマーカーバーでハイラ...