プロジェクトの依存関係ダイアグラムを調べる
ReSharper を使用すると、ソリューションアーキテクチャを視覚的に表示しながら、ソリューション内のプロジェクト依存関係を調べることができます。
アーキテクチャビューが新しいエディタータブで開き、プロジェクトの依存関係を視覚的に調べたり、ソリューションの現在の状態を以前に取得したスナップショットと 比較したりできます。

プロジェクトの依存関係ダイアグラムを開く
ソリューションエクスプローラー では、1 つまたは複数のプロジェクト、1 つまたは複数のソリューションフォルダー、ソリューションノードを選択します。
選択項目を右クリックして、 プロジェクト依存関係ダイアグラムを表示する を選択するか、メインメニューで を選択します。
アーキテクチャビューが新しいドキュメントタブで開き、最初に選択したアイテムの依存関係が表示されます。
最初に選択された項目は、 アーキテクチャビュー の左部分でもチェックされ、すべての解決項目がリストされます。 他の項目をチェックすることができます: ダイアグラムに表示され、対応するリンクが追加されます。
必要に応じて、ツールバーの グループ化 セレクタを使用して項目のグループ化を変更できます。
None - すべてのプロジェクトはグループ化せずに表示されます。
ソリューションフォルダー - プロジェクトは ソリューションフォルダーごとにグループ化されています。
ファイル構造 - プロジェクトとソリューションフォルダーは、ファイルシステム構造によってグループ化されています。
プロジェクト間のリンクを理解する
ReSharper はダイアグラムを 2 段階で作成します:
プロジェクト参照に基づいて依存関係ダイアグラムを作成します。
このステップは、ダイアグラムを開くと自動的に実行され、大規模なソリューションでもほとんど時間がかかりません。
結合(英語)分析を実行して、 参照プロジェクトの使用数を計算します。
この手順はリソースを大量に消費し、最大で数分かかる場合がありますが、バックグラウンドで実行されます。 分析の進行状況は、アーキテクチャビューの上部にあるステータスバーに反映されます。
結合解析の状態は、 カップリング分析を有効にする
ボタンの状態に対応しています。 結合分析はリソースを大量に消費するプロセスであり、大規模なソリューションのパフォーマンスに影響を与える可能性があります。 ダイアグラムの操作中に遅延が発生した場合は、このボタンを使用して結合分析を無効にし、必要に応じてダイアグラムを調整してから、分析を再度有効にすることができます。 分析アルゴリズムは、最初に表示されたプロジェクトの結合を計算し、次にビューから隠されたプロジェクトを処理します。
ダイアグラム内のプロジェクト間のリンクは、次の方法で表示できます。
線種 | 意味 |
|---|---|
黒い実線 | 2 つのノード間にプロジェクト参照があることを示します。 これらの行は、 結合(英語)分析が進行中または無効になっている場合に使用されるため、プロジェクト間の使用回数は不明です。 |
特定の幅の青い実線 | この参照のカップリング解析は終了しており、参照プロジェクトに少なくとも 1 つの使用箇所が存在します。 線の太さは、参照先プロジェクトの型が参照元プロジェクトで使用されている回数を表します。 参照の上にマウスを移動すると、この番号がツールチップに表示されます。 |
点線 | 結合分析が終了すると表示され、次のいずれかを意味します。
|
緑の実線 | 参照はスナップショットにはありませんが、ソリューションには存在します。 差分の表示 |
赤い実線 | 参照はスナップショットに存在しますが、解決策にはありません。 差分の表示 |
アイテムの表示と非表示
左側の対応するアイテムのチェックボックスを使用して、ダイアグラムの特定のソリューションアイテム(プロジェクト、フォルダー、ソリューションフォルダー)を表示または非表示にできます。
ダイアグラム領域から直接アイテムを表示 / 非表示にする方法もいくつかあります。
ダイアグラム内のいくつかの項目を選択して他の項目を非表示にするには、選択したい項目を Ctrl -クリックし、選択範囲を右クリックして 選択範囲 | 選択したモジュールのみを表示する を選択します。
2 つのリンクされたアイテムを選択するには、それらの間のリンクを右クリックして 選択範囲 | 選択したモジュールのみを表示する を選択します。
項目を非表示にするには、ダイアグラムでその項目を選択し 削除 を押します。
特定のアイテムに焦点を当てるもう 1 つの方法は、依存プロジェクトまたは参照プロジェクトを表示し、他のすべてのアイテムを非表示にすることです。 これを行うには、1 つ以上のアイテム(プロジェクトまたはグループ化アイテム)を選択し、選択範囲を右クリックして これを表示 / これらおよび依存 / 参照 を選択します。 これらのコマンドは、無関係なアイテムのみを非表示にし、現在非表示になっている参照 / 依存ノードを追加しないことに注意してください。
特定のプロジェクトによって参照または依存するすべてのアイテムを表示するには、これらのアイテムが現在表示されていなくても、1 つ以上のアイテムを選択して 選択範囲 | 参照 / 依存モジュールを追加する を選択します。
必要に応じて、ダイアグラムで行った変更(表示/非表示となっているプロジェクト)を 元に戻す
をクリックするか、
Ctrl+Z
を押して段階的に元に戻すことができます。 元に戻す コマンドを元に戻すには、 やり直し,
をクリックするか、
Ctrl+Y
を押してください。
ダイアグラムをパンおよびズームする
ダイアグラムをパンおよびズームするには、ダイアグラム領域の左上隅にあるコントロールを使用します。 または、タッチパッド、スクロールバーを使用してダイアグラムをパンするか、ダイアグラムアイテムの外側のダイアグラム領域の任意の場所をクリックして、ハンドカーソル
が表示されている間にドラッグすることもできます。 マウスホイールを使用してズームすることもできます。
ダイアグラムのアイテムを再配置する
ダイアグラムのレイアウトは自動的に計算されますが、必要に応じて変更できます。すべての項目は移動可能です。 項目を移動するには、まずクリックして選択し、クロスカーソル
が表示されている間にクリックしてドラッグします。
ダイアグラムでプロジェクトをグループ化する
グループ化 セレクターを使用すると、 ソリューションフォルダーまたはファイルシステム構造ごとにプロジェクトをグループ化できます。 グループ化は、左側の部分とダイアグラムの両方に適用されます。
必要に応じて、次のいずれかの方法で、ダイアグラムのグループ化項目を折りたたんで展開できます。
グループ化アイテムの左上隅にある下向き矢印をクリックします。 折りたたむと、記号が上矢印に変わり、クリックしてアイテムを展開できます。
ダイアグラム内のグループ化項目を選択し、 Ctrl + Left Arrow と Ctrl + Right Arrow を押します。
ツールバーの グラフを折りたたむ
と グラフを展開
をクリックして、すべてのグループ化項目を折りたたんだり展開したりします。
プロジェクト参照を分析する
あるプロジェクトの型の別のプロジェクトでの使用方法の詳細については、プロジェクト間の対応するリンクを選択して Alt+F7 を押すか、右クリックして 使用箇所を表示 を選択してください。 ReSharper は 検索結果 ウィンドウに使用箇所を表示します。
カップリング分析が特定の参照で完了し、ReSharper によって未使用(破線)としてハイライトされた場合、未使用の参照を削除するためにダイアグラムから切り替える必要はありません。その参照を選択し Control+Shift+R を押すか、右クリックして リファクタリング を選択してください。 その後、 Alt+Delete を押すか、 安全なアセンブリ参照の削除 をクリックします。
考えられるアーキテクチャの問題を検出する
ソリューションアーキテクチャのベストプラクティスに従おうとしている場合、アプリケーションはおそらく、相互に通信する個別のレイヤーを持つ レイヤー構造(英語)を持っています。
可能なパスを表示する
ボタンを使用すると、グループ化だけでなく、レイヤー間の通信の観点からも、アプリケーションレイヤーが正しく設計されているかどうかを確認できます。 要するに、ボタンがオンになっていると、2 つの特定のプロジェクトの間に、現在ビューに隠れている他の参照プロジェクトからなるパスがあるかどうかを確認できます。 これらのパスは緑色の点線で示されています。 このボタンは、現在表示されている 2 つのプロジェクトをリンクする非表示の中間プロジェクトがある場合にのみ有効になります。
その動作を説明するために、次の例を考えてみましょう。
大きなソリューションを持っており、対応するソリューションフォルダーによって表される「サービス」アーキテクチャレイヤーを分析しているとします。 興味のある 2 つのプロジェクトだけを表示し、他は非表示にします:

2 つのプロジェクト間には直接的なプロジェクト参照はありませんが、 可能なパスを表示する
ボタンを有効化すると、他のプロジェクトを経由してこれらのプロジェクト間にパスがあることがわかります: 
これらの 2 つのプロジェクトがどのように相互に依存するかを確認するには、パスリンクを右折して パスの表示 を選択します。 仲介プロジェクトがダイアグラムに表示され、すべて別のレイヤーにあることがわかります:

この情報に基づいて、アプリケーション構造を再作成する必要があるかもしれないことがわかります。
ダイアグラムをファイルにエクスポートする
依存関係を調べている任意の時点で、次のツールバーボタンを使用してダイアグラムをファイルにエクスポートできます。
ダイアグラムのエクスポート
をクリックします。 開いた「名前を付け 名前を付けて保存 ダイアログで、 「ファイルの種類 :」セレクターを使用してダイアグラムをエクスポートする方法を選択できます。
PNG — ダイアグラムの現在のビューを PNG イメージにエクスポートします。
XML 用紙仕様 — 大きなダイアグラムを印刷するために使用できる XPS 形式でダイアグラムをエクスポートします。
GraphML — ダイアグラムを GraphML フォーマットでエクスポートでき、外部解析や ReSharper へのインポートに使用できます。
ダイアグラムのインポート
ReSharper からエクスポートした、または他のツールからエクスポートした GraphML フォーマットのダイアグラムがあれば、それをインポートできます。 これを行うには、メインメニューから を選択するか、プロジェクトまたは型の依存関係ダイアグラムで ダイアグラムのインポート
をクリックしてから、ダイアグラムを含む *.graphml ファイルを選択します。
保存されたスナップショットを現在のソリューションの状態と比較する
いつでも、ソリューションの現在の状態のスナップショットをファイルに保存し、将来の参照に使用できます。 これを行うには、ツールバーの アーキテクチャグラフを保存する
」をクリックし、スナップショットファイルの保存場所を選択します。
メインメニューで を選択し、ダイアグラムスナップショットファイル .argr を選択することにより、保存されたスナップショットを後でロードして調査できます。
スナップショットが新しいエディタータブで開き、ソリューションの現在の状態とスナップショットに保存された状態の違いを確認できます。
依存関係ダイアグラムがファイルから開かれた場合、 差分の表示
ボタンが使用可能になり、デフォルトでオンになります。 このボタンを使用して、スナップショットと現在のソリューションの状態の違いを表示または非表示にできます。
アーキテクチャビューのツールバーコントロール
コントロール | 名前の指定 | 説明 |
|---|---|---|
グループ化 | このリストを使って、To-do アイテムをグループ化するための条件を選択します。 いくつかのオプションが提供されます。
| |
| 元に戻す | ダイアグラムの変更(表示 / 非表示のプロジェクト)を段階的に元に戻します。 |
| やり直し, | 最後の元に戻す操作を元に戻します。 |
| カップリング解析のオン / オフを切り替える | このトグルボタンを使用すると、バックグラウンドで実行される カップリング(英語)分析を有効または無効にできます。 デフォルトでは、このボタンはオンになっており、新しいダイアグラムを開くとすぐに分析が開始されます。 結合分析はリソースを大量に消費するプロセスであり、大規模なソリューションのパフォーマンスに影響を与える可能性があります。 ダイアグラムの操作中に遅延が発生した場合は、このボタンを使用して結合分析を無効にし、必要に応じてダイアグラムを調整してから、分析を再度有効にすることができます。 分析アルゴリズムは、最初に表示されたプロジェクトの結合を計算し、次にビューから隠されたプロジェクトを処理します。 |
| 推移的な参照を隠す / 表示する | このトグルボタンを使うと、プロジェクト間の推移的参照を表示できます。デフォルトでは非表示となっており、ダイアグラムの構造を保ったままシンプルにしています。 例えば、 |
| アーキテクチャグラフを保存する | 依存関係のスナップショットをファイルに保存します。 詳細については、 プロジェクトの依存関係ダイアグラムを調べる を参照してください。 |
| 差分の表示 | このボタンは、ビューに表示されるスナップショットが現在のソリューションと異なる場合にのみ有効です。 ボタンをクリックして、スナップショット内のソリューションの状態を現在の状態と比較します。 |
| グラフを折りたたむ | ダイアグラム内のすべての要素を折りたたみます。 |
| グラフを展開 | ダイアグラム内のすべての要素を展開します。 |
| 可能なパスを表示する | ボタンがオンの場合、2 つの特定のプロジェクト間に、現在ビューから非表示になっている他の参照プロジェクトで構成されるパスがあるかどうかを確認できます。 これらのパスは緑色の点線で示されています。 このボタンは、現在表示されている 2 つのプロジェクトをリンクする非表示の中間プロジェクトがある場合にのみ有効になります。 詳細については、 考えられるアーキテクチャ上の問題の検出を参照してください。 |
| PNG にエクスポート | ダイアグラムの可視部分を PNG イメージファイルとして保存するには、このボタンをクリックします。 |