ReSharper (と Visual Studio) を高速化
Visual Studio にインストールされている ReSharper には、2 つの主要なパフォーマンス上の問題があります。
システムが要件を満たしていません。この場合、問題に対処するための最初のステップとして、システムをアップグレードすることをお勧めします。
ReSharper が最新のハードウェアで正常に動作し、調整することなく中規模および大規模のソリューションで動作することを常に確認しています。Visual Studio 開発者は同じことに取り組んでいると信じています。
一部の機能を無効にして古いハードウェアで ReSharper を高速化しようとすると、開発パフォーマンスを高速化できる優れたツールが失われます。
同じ 32 ビットプロセスを共有する Visual Studio と ReSharper は、システムを限界まで押し上げます。多くの場合、これは大規模なソリューションで発生することが報告されており、ReSharper が Visual Studio v. 2015 以降にインストールされている場合に発生します。
この場合、システムが要件を満たしていれば、ほとんどの場合、以下のチェックリストがパフォーマンスの問題の修正に役立ちます。
大規模なソリューションを初めて開くのにかなりの時間(最大数分)かかることは、問題の兆候ではありません。ReSharper は、ソリューションのモデルを構築してキャッシュします。このモデルは、コード分析だけでなく、ナビゲーションと検索、コード補完、単体テストなど、ほぼすべての機能で使用されます。
インデックス作成の結果はすでにハードドライブにキャッシュされているため、このソリューションを後で開いても、大幅な遅延は発生しません。
ReSharper は最初の開始時にアセンブリアノテーションを処理するため、ReSharper キャッシュをクリーンアップしても、その後の開始はより高速になることに注意してください。
最初に試してみてください
パフォーマンスの問題の最も一般的な原因は、次のアクションで取り除くことができます。
パフォーマンスに影響する ReSharper および Visual Studio 環境設定を確認してすばやく修正します。
に移動して、ソリューション全体の分析を使用しない場合は、無効にするか、ソリューション全体の分析で警告を無効にすることを検討してください。無効になっている場合でも、ソリューション全体に対してコードインスペクションを実行することにより、ソリューション内のすべてのコードの問題をいつでも見つけることができます。ソリューション全体の分析を構成するには、 に移動します。
Visual Studio オプションで、なしを選択します。これにより、Git または別の VCS プロバイダーがオフになり、全体的なパフォーマンスが向上します。
に移動します。ソース管理プラグインとして
ハードウェアチェックリスト
ハードウェア割り込みと DPC がないことを確認します(通常、悪いドライバや仮想化によって引き起こされます)。
ハードドライブが断片化していないことを確認してください。
ページファイルが 1GB 以上であることを確認してください。
空きディスク容量が 15% 以上であることを確認してください(MFT の断片化 / スペース不足リスク)。
4GB 以上の空き容量があることを確認してください。
SSD にソリューションと ReSharper キャッシュを保存すると、RAM ディスクが大きな違いにはなりません。
推奨システムソフトウェア調整
Microsoft が現在サポートしている Windows 版を使用する
Windows を最新の状態に保つ
64 ビットオペレーティングシステムを使用する
devenv.exe、msbuild.exe、プロジェクト / ソリューションフォルダー、ReSharper キャッシュフォルダー(デフォルトでは %LOCALAPPDATA%\JetBrains\Transient および構成可能)を Windows Defender(およびその他のウイルス対策ソフトウェア)の無視リストに追加します。
不要なサービスとプロセスを停止する
プロジェクト / ソリューションフォルダーと ReSharper キャッシュフォルダーを Windows インデックスから除外する
Visual Studio
Visual Studio の設定を調整する前に、最新の Visual Studio アップデート / サービスパック / ホットフィックスがインストールされていることを確認してください。
Visual Studio 設定を構成する
Visual Studio オプション(
)を開き、次のように環境設定を構成します。クライアントのパフォーマンスに基づいて視覚体験を自動的に調整するを無効にし、リッチクライアントのビジュアル体験を可能にするを無効にし、可能であれば、ハードウェアグラフィックアクセラレーションを使用を有効にします。これらの調整により、UI の遅れが減少し、全体のパフォーマンスが向上します。
:なしを選択します。これにより、Git または別の VCS プロバイダーがオフになり、全体的なパフォーマンスが向上します。
: ソース管理プラグインに: 起動時に空の環境を表示し、コンテンツのダウンロードを無効にすることを選択します。開始ページとニュースチャンネルをオフにすると、起動時に時間がかかることがあります。
自動回復情報の保存を無効にします。開いているドキュメントの現在の状態を常にコピーすることは、クラッシュの場合に役立つ場合がありますが、大規模なソリューションでは UI がフリーズするという代償を払うことになる可能性があります (たとえば、ここのコメントを参照してください)。この機能を無効にし、重要な変更を行った後はファイルを保存する習慣を身に付けることをお勧めします。
:変更を追跡するを無効にします。「変更の追跡」が有効になっている場合、Visual Studio は編集された行にガターハイライトを追加します。現在のファイルの編集が多すぎると、これらのハイライトを再計算する必要があることが多いため、エディターが遅くなる可能性があります。
:これは便利な機能ですが、特に大きなファイルを操作する場合は、無効にすることをお勧めします。
垂直スクロールバーにアノテーションを表示するを無効にします。ReSharper は、右ガターまたは垂直スクロールバーを広範囲に使用して、設計時インスペクション通知、構造検索と置換の結果、To-do 項目、ファイル内のシンボルの使用箇所を表示します。Visual Studio もスクロールバーに多くの通知を表示し、Visual Studio と ReSharper が同じエラーを報告することがありますが、これは 2 回表示され、スクロールバーがマークで雑然となることがよくあります。
:ReSharper マークを使用する場合は、Visual Studio アノテーションを完全にまたは部分的に無効にし、レンダリングしないことでパフォーマンス上の利点を得ることができます。
または、スクロールバーの ReSharper のマークを無効にすることもできます。ReSharper | オプション | エディター | エディターの外観に移動し、マーカーバーを表示しないを選択します。
「IDE は基本的に、画面上にスクロールするときにメソッドごとにすべての参照の検索操作を実行します。」であるため、大規模なソリューションのパフォーマンスに関する(英語)いくつかの考慮事項の 1 つです。遅延に気付いた場合は無効にすることをお勧めします。
: CodeLens を無効にします。CodeLens は、CodeLens の一部の機能は ReSharper によって提供されます。たとえば、シンボル Alt+F7 のすべての参照または使用箇所をいつでもすばやく取得できます。
スクリプトのジャストインタイムデバッグを無効にします。これにより、ビルドとデバッグが高速化されます。
:: Web フォームデザイナを無効にします。これにより、UI とエディターの遅延が減少します。
非常にリソース集約的な機能であることが知られています(英語)です。XAML フォームの視覚的表現なしで XAML コードを操作できる場合は、XAML デザイナーを無効にすることを強くお勧めします。
: XAML デザイナーを無効にします。Visual XAML デザイナーはフォーマットアシスタントを使用すると、コードが 2 回再フォーマットされるのを防ぎ、編集の遅れを減らすことができます。
: すべての自動フォーマット設定を無効にします。ReSharper のファイル構造ウィンドウを使用している場合は、エディターの上部にあるナビゲーションバーを使用しない可能性が高く、このオプションページで安全に無効にすることができます。
:
: C/C++ コードを使用している場合は、 環境設定を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 オプション(Alt+R O)を開き、次のように設定を構成します。
Visual Studio バルブを隠すが選択され、Visual Studio バルブアクションを ReSharper アクションインジケーターにマージしますがクリアされていることを確認してください。ReSharper は、独自のアクションリストに統合された Visual Studio バルブアクションを表示できます。ReSharper は Roslyn に使用可能なアクションを要求する必要があるため、これはパフォーマンス面でコストがかかります。これにより、CPU とメモリの使用量が増加する可能性があります。
: このオプションページでは、Visual Studio 2015 以降の同様の機能との統合を構成できます。Roslyn へのすべての要求はバックグラウンドスレッドで行われますが、顕著なパフォーマンスの問題がある場合は、Visual Studio アクションの統合をオプトアウトすることをお勧めします。
コードインスペクションの様々な側面を無効にすることができます。これが無効にできるもので、無効になっている最小の機能から始めます。
: このオプションページでは、ソリューション全体の分析を使用しない場合は、無効にするか、ソリューション全体の分析で警告を無効にすることを検討してください。無効になっている場合でも、ソリューション全体に対してコードインスペクションを実行することにより、ソリューション内のすべてのコードの問題をいつでも見つけることができます。
最終的なステップは、コード分析を有効にするチェックボックスをオフにすることです。これにより設計時インスペクションが無効になりますが、必要なときに必要なスコープでコードインスペクションを実行できます。
: このページでは、コード分析から除外するものを選択します。
スキップする要素セクションでは、コードインスペクションで無視するファイルとフォルダーを指定できます。Control+Alt+Shift+D8 を押して、現在のファイルを無視リストに追加することもできます。ショートカットをもう一度押すと、このファイルのインスペクションが再び有効になります。この操作に別のショートカットをバインドする場合は、Visual Studio オプションで
ReSharper_EnableDaemon
コマンドを探します。サードパーティのコードまたは凍結されたコードを含むプロジェクトがいくつかあり、それらは変更されない場合、これらのプロジェクトを無視するプロジェクトセクションのインデックス作成から除外できます。
ユニットテストチェックボックスをオフにすると、すべての ReSharper ユニットのテスト機能が無効になり、メモリが節約されます。
: ここでは、使用しない ReSharper 機能を無効にできます。例:ソリューションのキャッシュを: セレクターで、「システム温度」または任意のカスタムフォルダーを選択します。ソリューションが VCS にない場合は、「ソリューションフォルダー」を選択することもできます。カスタムフォルダーを選択することをお勧めします。「ユーザーローカル設定フォルダー」 %LOCALAPPDATA% の問題は、ReSharper がこのフォルダーに書き込むときに、Visual Studio のディレクトリウォッチャーがトリガーされる可能性があることです。これは非常に頻繁に発生します。
:ReSharper IntelliSense の特定の部分を無効にするか、完全にオフにして Visual Studio のネイティブの IntelliSense にフォールバックできます。無効にできる最小限の機能から始めて、無効にできるものは次のとおりです。
: 入力が遅くなる場合は、これを構成する必要があります。コードインスペクションと同様に、メンバーの署名を表示する、シンボルの種類を表示する、要約を表示をクリアします。これにより、補完リストの構築が簡単になります。
:カスタム IntelliSense)をオフにするか、完全にオフにします(Visual Studio)。
: 特定の言語用の ReSharper の IntelliSense(
コードの再フォーマットを回避するために、セミコロンで自動フォーマットするおよび右波括弧で自動フォーマットするを無効にします。また、共通の言語固有のタイプミスを修正するを無効にします。これにより、一部のタイピングアシスト機能がオフになります。これらのチェックボックスをオフにすると、入力が速くなります。
: 入力中のC++ を使用している場合は、基本補完でインポート項目を表示する設定を無効にすることもできます。これにより、補完リストが簡素化され、その結果、入力の遅延が減少する可能性があります。
現在行のハイライト、一致する区切り文字をハイライトするを無効にします。これにより、UI とエディターの遅延の可能性を減らすことができます。
:: 使用しない ReSharper 拡張機能を無効にします。
インレイヒントを使用しない場合は、インレイヒントを有効にするチェックボックスをオフにして、インレイヒントサブシステム全体を無効にします。
:ReSharper ビルドを使用するを有効にします。ReSharper のインクリメンタルビルドは、特に大規模ソリューションの場合、ビルド時間を大幅に短縮することができます。
:役に立たないコンテキストアクションを無効にできます。
: ここでは、コードのインスペクション時にプロパティのコンテキストを分析するオプションを有効にしないでください。
: JavaScript を使用していてパフォーマンス上の問題がある場合は、ナビゲーション用にインデックスが付けられますが、インスペクション、クイックフィックス、リファクタリングはしません。
: ここで、C++、JavaScript、TypeScript、CSS、HTML、JSON ファイル、フォルダー、ワイルドカードを追加して、「スキップ」または「ライブラリ」として扱うことができます。ReSharper は「スキップされた」ファイルを完全に無視し、「ライブラリ」ファイルを読み取り専用として扱います -自動言語挿入を無効にできます。
: このページでは、関心のない
複雑な UI コントロールを過度に使用しないでください
未使用の単体テストセッションを閉じます。
ソリューション全体の分析を有効にすると、ステータスバーにエラー / 警告の数が表示されるため、ソリューションのエラー / 警告ウィンドウを閉じることができます。
その他の調整
コードテンプレートの展開を高速化するには、使用するテンプレートの再フォーマットおよび修飾された参照を短くするオプションをオフにします。
使用しないときはプロセスエクスプローラーウィンドウを閉じてください。
何も役に立たない場合
上記のすべてを試してもパフォーマンスが低下している場合は、一時的に ReSharper を無効にして、それが減速の原因であるかどうかを確認できます。ReSharper を無効 / 有効にするには、一時停止する / 今すぐ再開をクリックします。
に移動し、ReSharper を一時停止するとパフォーマンスが向上するが、コード分析、コードクリーンアップ、またはコードの再フォーマットに時々使用したい場合は、ReSharper のオンとオフをすばやく切り替えるショートカットが必要になることがあります。方法は次のとおりです。 に移動して ReSharper_ToggleSuspended
コマンドを見つけ、選択したショートカットを押して割り当てをクリックします。
既知のパフォーマンス上の問題
古いキャッシュ
ReSharper を最近更新し、以前のバージョンで開かれたソリューションでパフォーマンスの低下を観察した場合は、ReSharper キャッシュをクリアしてソリューション .suo ファイルを削除することで、スピードアップを図ることができます。
キャッシュをクリアするには、キャッシュのクリアをクリックします。
に移動し、JavaScript ファイルの作成
ソリューション内にビルドされた JavaScript ファイル (たとえば、jquery.js) がある場合は、ReSharper オプション Alt+R, O の ページのライブラリコードセクションにこれらのファイルをリストして、分析から除外します。
互換性に関する既知の問題
その他の Visual Studio 拡張機能
主な互換性の問題は、以下の製品で確認されています。
DevExpress CodeRush/Refactor Pro (互換性なし)
Telerik JustCode (互換性なし)
Whole Tomato Visual Assist
生産性のパワーツール
パフォーマンスの低下は、次の製品で確認されています。
StyleCop ReSharper プラグインの一部のバージョン
Visual Studio の PowerCommands
.cshtml ファイルの編集中に 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 を超えるコードインスペクションを適用することにより、静的コード分析(コードインスペクションとも呼ばれます)を提供します。スクリプト...
パフォーマンスガイド
このページを使用して、パフォーマンスが重要な設定の概要を取得し、それらの値をすばやく変更します。環境設定に次善の値がある場合、ReSharper はその横にカタツムリアイコンを表示します。リストで環境設定を選択すると、ReSharper は、それが構成されているパス、現在の値、推奨値をページの下部に表示します。選択した環境設定の現在の値が推奨値と異なる場合は、適用をクリックすると、ReSharper が自動的に推奨値を設定します。一部の設定(そのような設定は警告アイコンでマークされています)では...
ソリューション全体の分析
ソリューション全体の分析により、プロジェクトのコンパイルを妨げないものを含め、サポートされているすべての言語 C++ を除くでエラーが検出されます。プロジェクトにそのようなファイル (JavaScript、CSS、HTML など) が含まれている場合、ソリューション全体の分析は、実行時にしか検出できないエラーを見つけるのに役立ちます。ReSharper のソリューション全体の分析では、2 つの関連しているが異なる機能が実現します。ソリューション全体のエラー / 警告モニター:ReSharper 自...
特定の範囲でコードの問題を見つける
設計時コードインスペクションは、エディターでコーディングしたり、特定のファイルを見直したりするときに役立ちます。ただし、ReSharper を使用すると、ソリューション全体または狭い範囲でスタティックコード分析を実行し、結果をフレンドリーな視点で調べることもできます。必要に応じてインスペクション結果を共有することもできます。開始コードインスペクション:ソリューション、プロジェクト、カスタムスコープのコードをインスペクションするソリューションワイドのインスペクションの結果(たとえば、未使用のパブ...
構造検索と置換
場合によっては、正規表現に一致する特定のシンボルやテキストの出現を検索するなどの標準的な検索方法では、目的の結果が得られない場合があります。例: プロジェクトに固有のコードの匂いを見つけたり、リファクタリングする必要があるコードを見つける必要があるかもしれません。ReSharper を使用すると、特定のパターンに一致するコードブロックを検索し、必要に応じて置き換えることができます。これらのブロックはまったく異なる場合があります。異なるタイプ、式、ステートメントなどを含むことができますが、論理的に...
設計時にコードの問題を分析する
ReSharper は、エディターでコードファイルを開くとすぐに分析を開始し、最後まで編集を続けます。検出されたすべてのコードの問題は、重大度に従ってエディターでハイライトされます。問題のマップは、エディターウィンドウの右側のマーカーバーにも表示されます。ここでは、ファイルのステータスを即座に確認し、マークをクリックして特定のコードの問題に移動できます。デザインタイムインスペクションの機能:ReSharper によって実行されるデザインタイムコードインスペクションを説明するために、エディターに...