依存関係グラフでのコード依存関係の視覚化
コードと依存関係の表示、整理を理解するために、Visual Studio Ultimate の依存関係グラフを生成できます。依存関係グラフは何か、およびどのような便利です。
サポート:プロジェクト
Visual C# .NET と Visual Basic .NET プロジェクト、Windows ストア apps が、アセンブリ ファイル (.dll または .exe)。
Visual C++ プロジェクト、C または C++ コード (マネージまたはネイティブ)、ヘッダー ファイル (.h か #include)、およびバイナリ ファイルに Windows ストア apps が含まれます。
ビデオ:
このトピックの内容
操作方法が考えられますか。
コードの視覚化の依存関係
依存関係グラフの共有
バッチ処理のグラフを生成します。
トラブルシューティング
操作方法が考えられますか。
ソリューションの概要を取得します。: [アーキテクチャ] で、メニューの [依存関係グラフの生成]、**[ソリューション]**を選択します。
最上位レベル アセンブリを示すグラフを取得します。これらの配置によって、これらのアセンブリを参照できます。表示されたときにマウス ポインターをアセンブリの上に移動し、シェブロン ([^]) ボタンをクリックします。コードを調べて続行するように名前空間、型、およびメンバーの同じにします。
グループ間の依存関係を表示するには、グラフ上の項目を選択します。
詳細については、ソリューションの概要を取得します。を参照してください。また、コードの問題を見つけるにアナライザーを実行できます。「依存関係グラフのコードに含まれる潜在的な問題の検索」を参照してください。
ソリューション内の特定の依存関係を視覚化します。: [ソリューション エクスプローラー]で、目的の項目を選択します。アセンブリの参照、プロジェクト、フォルダー、ファイル、型とメンバーを選択できます。特定の項目を検索するには、[ソリューション エクスプローラー] の検索ボックスを使用します。
[ソリューション エクスプローラー] のツール バーで、[新しいグラフ ドキュメントを生成します。***を選択します。
または
[ソリューション エクスプローラー] から既存のグラフに項目をドラッグします。
ヒント 空のグラフを、[ファイル] のメニューで作成するには、新規、[ファイル]、[有向グラフのドキュメント]を選択します。項目をドラッグするときは、項目の親の階層を含めるには、Ctrl キーを押し [CTRL] のキー。
選択した項目を示すグラフを取得します。これらの配置によって、これらの項目の確認できます。表示されたときにマウス ポインターを項目の上に移動し、シェブロン ([^]) ボタンをクリックします。
詳細については、ソリューション内の特定の依存関係を視覚化します。を参照してください。また、コードの問題を見つけるにアナライザーを実行できます。「依存関係グラフのコードに含まれる潜在的な問題の検索」を参照してください。
依存関係グラフは何か、およびどのような便利です。
依存関係グラフでは、Visual 方法をコードを調べて、ファイルおよびコード行に対して表示の依存関係を把握できます。、ノードおよびリンクとして項目と関係、または下向きの矢印を表示できます。たとえば実行するコード レビューがあるとします。保留中の変更を含むファイル セットがあります。依存関係グラフを作成すると、これらのファイルからこれらの変更のためのコードと依存関係を表示できます。ソリューション内の特定の依存関係を視覚化します。を参照してください。
既定では、コンテナーの関係は、展開および折りたたむことができる グループとして表されます。
ヒント |
---|
[子の再フェッチ] のボタンは 、コード グループにメンバーを取得することは存在するが、できます。グラフに表示されません。また、も使用のリンクに別のスタイルを適用したため、より簡単に確認できます。「依存関係グラフの編集およびカスタマイズ」を参照してください。 |
また、リンクとしてコンテナーの関係を表示できます。グラフのショートカット メニューを開き、[グループ]、**[グループ化の解除]**を選択する:
また、コードの問題を見つけるにアナライザーを実行できます。「依存関係グラフのコードに含まれる潜在的な問題の検索」を参照してください。
依存関係グラフを最初に生成すると、Visual Studio は、見つかったすべての依存関係を指示します。このプロセスには多数のリンクを含む大規模なソリューションまたはグラフの時間 (特にかかることがあります。ただし、インデックス、新しい操作のパフォーマンスが向上します。コードが変更されると、Visual Studio は、更新されたコードのみをインデックス付け直されます。
生成するグラフが終了するのを待機しない場合は、この手順をいつでもキャンセル、次のヒントを試みることができます:
グラフ目的の依存関係のみ。
ソリューション全体のグラフを生成する前に、ソリューションのスコープを小さくします。
Visual Studio が 1 GB のメモリで実行することはできますが、Visual Studio はコードがインデックスを作成し、グラフを生成するときは、コンピューターのメモリに少なくとも一つの大きな遅延を避ける 2 GB があることをお勧めします。
[!メモ]
Visual Studio は、1 文字以上のプロジェクトが正常にビルド グラフを生成します。これは正常にビルドされるコードの依存関係のみを示します。ビルド エラーが特定のコンポーネントに発生すると、それらのコンポーネントのエラーがグラフに表示されます。グラフに基づいてアーキテクチャを決定する前に、コンポーネントが実際にビルドされ、依存関係を持ちます。
プロジェクト項目の [出力ディレクトリにコピー] のプロパティがに設定されている場合 [常にコピーする]グラフを作成またはソリューション エクスプローラーからグラフに項目を追加するのにさらに時間がかかる場合があります。これにより、インクリメンタル ビルドと Visual Studio に問題は、プロジェクトを常にビルドし直すことがあります。パフォーマンスを向上させるために、[新しい場合はコピーする] か PreserveNewestにこのプロパティを変更します。「インクリメンタル ビルド」を参照してください。
コードの視覚化の依存関係
コードの概要を取得します。
コードの特定の依存関係を視覚化します。
C の間の依存関係をまたは C++ のソース ファイルとヘッダー ファイルの視覚化します。
GraphCmd.exe を使用してバッチ処理のグラフを生成します。
ヒント |
---|
C++ プロジェクトの完全なグラフを生成するには、ブラウザー情報のコンパイラ オプション (/FR) がこれらのプロジェクトで設定する必要があります。このオプションを設定する場合、メッセージが表示され、メッセージが表示されます。メッセージが表示された場合は、[OK]のオプションで現在のグラフのみのオプションを設定するか、オプションを設定して、すべての新しいグラフのメッセージを非表示にできます。メッセージに新しいグラフに表示する場合、次のレジストリ キーを 0 に設定するか、キーを削除します: HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0\NativeProvider : AutoEnableSbr 「/FR、/Fr (.sbr ファイルの作成)」を参照してください。 |
コードの概要を取得します。
で、ソリューション全体または アセンブリまたはバイナリにはの依存関係グラフを作成できます。
ソリューションの概要を取得します。
[アーキテクチャ] で、メニューの [依存関係グラフの生成]、**[ソリューション]**を選択します。
最上位レベル アセンブリとの間の集約されたリンクを示すグラフを取得します。集約リンクの深さは、個々の依存関係をリンクが表すかを示します。[外部] のグループは、プラットフォームの依存関係など、ソリューションの外部のすべてが含まれています。外部アセンブリが使用されている項目のみに示します。
これらの配置によって、これらのアセンブリを参照できます。表示されたときにマウス ポインターをアセンブリの上に移動し、シェブロン ([^]) ボタンをクリックします。(キーボード: 項目を選択し、[PLUS] のキー (+) をクリックします)。コードを確認し続けるように、名前空間、クラスおよびメンバーの同じにします。
ツールヒントが表示されるまで項目またはリンクに関する詳細情報を取得するには、項目の上にポインターを移動します。
集約リンクによって表される項目とその依存関係を調べるにはリンクを最初に選択して、ショートカット メニューを開きます。[表示]、[現在のダイアグラム内の寄与するリンク] または **[新しいダイアグラム内の寄与するリンク]**を選択します。
Visual Studio は、リンクの両端にグループを展開し、リンクに参加する依存関係と、それらの項目のみが表示されます。コード内にあるが、グループにない項目を確認するには、[子の再フェッチ]を選択します。
参照トピック
アセンブリまたはバイナリの概要を取得します。
空のグラフを作成します。は、または既存のグラフ (.dgml ファイル) を開きます。Visual Studio の外部から、グラフにアセンブリまたはバイナリをドラッグします。
[!メモ]
ユーザー アクセス制御の (UAC) の同じアクセス許可レベルでエクスプローラーおよび Visual Studio を実行する場合にのみエクスプローラーからのアセンブリまたはバイナリをドラッグできます。たとえば、UAC を有効にすると、管理者として Visual Studio を実行している場合、Windows エクスプローラーは、ドラッグ操作をブロックします。Visual Studio が管理者として実行されるコード、または回転 UAC を確認します。これを回避するには。Windows 8、Windows エクスプローラーでファイル エクスプローラーであることに注意してください。
または
[アーキテクチャ] で、メニューの [ウィンドウ]、**[アーキテクチャ エクスプローラー]**を選択します。
最初の列で、**[ファイル システム]の下に、[ファイルの選択]**を選択します。
[開く] ボックスで、アセンブリまたはバイナリを検索し、をクリックします。**[アーキテクチャ エクスプローラー]**の次の列に追加するに [開く] を選択します。
**[アーキテクチャ エクスプローラー]**で、アセンブリまたはバイナリを選択します。
選択したアセンブリまたはバイナリを含む列の右側で、プロジェクトを配置するために、折りたたまれたアクション列を選択します。
ヒント 折りたたまれたアクション列はその上にポインターを移動すると、強調表示された状態で表示されます。
アクション列で、**[コマンド]**の下に、依存関係グラフを生成するに [開く] を選択します。
「アーキテクチャ エクスプローラーを使用したコードの検索」を参照してください。
空のグラフを作成するには
ソリューションをに、[ファイル] のメニューに追加せずに新しい空のグラフを開くには、新規、**[ファイル]**を選択します。
または
ソリューションの [ソリューション項目] フォルダーに空のグラフを追加するには、最上位レベルのソリューション ノードのショートカット メニューを開きます。追加、新しい項目を選択します。
**[インストール済み]の下に、[全般]**を選択します。
右ペインで、**[有向グラフのドキュメント]**を選択します。
また [アーキテクチャ] のメニューのモデリング プロジェクトに **[新しいダイアグラム]**を選択して、空のグラフを追加できます。
コード内の特定の依存関係を視覚化します。
ソリューションまたは アセンブリおよびバイナリの特定のアイテムの依存関係グラフを作成できます。
ソリューション内の特定の依存関係を視覚化します。
[ソリューション エクスプローラー]で、目的の項目を選択します。アセンブリの参照、プロジェクト、フォルダー、ファイル、型とメンバーを選択できます。特定の項目を検索するには、[ソリューション エクスプローラー] の検索ボックスを使用します。
ヒント 型またはメンバーの依存関係の項目を検索するには、型のショートカット メニューまたは [ソリューション エクスプローラー]のメンバーを開きます。依存関係の種類を選択します。ソリューション エクスプローラーは、指定された依存関係がある項目を示します。結果を選択します。
で項目とメンバーを、[ソリューション エクスプローラー] のツール バーで、グラフ化するには、[新しいグラフ ドキュメントを生成します。***を選択します。
または
グラフの親の階層を含めるには、[ソリューション エクスプローラー] のツール バーの [作成する新しいグラフ ドキュメントを…] のリストを開き、を **[先祖を持つ新しい依存関係グラフ]**を選択します。
ヒント グラフに項目をドラッグできます。最初に、空のグラフを作成します。、または既存のグラフ (.dgml ファイル) を開きます。項目をドラッグしながら、親コンテナーの階層を含めるには、Ctrl キーを押し [CTRL] のキー。
選択した項目を示すグラフを取得します。
項目を調べるには、その配置できます。表示されたときにマウス ポインターを項目の上に移動し、シェブロン ([^]) ボタンをクリックします。すべての項目を展開するには、グラフのショートカット メニューを開きます。[グループ]、**[すべて展開]**を選択します。
[!メモ]
このコマンドは、すべてのグループを展開することが使用不可能なグラフやメモリの問題を生成する場合は使用できません。
using グループから項目を取得するには、グループ内の [子の再フェッチ] を選択します。
グラフのいずれかに関連する詳細に項目を表示するには、アイテムのショートカット メニューを開きます。目的の項目の [表示] と関係を選択します。
アセンブリの場合、選択する:
参照アセンブリ
アセンブリこのアセンブリ参照を追加します。外部アセンブリは [外部] のグループに表示されます。
アセンブリの参照
このアセンブリを参照するソリューション アセンブリを追加します。
クラスには、選択する:
基本データ型
クラスでは、基本クラス、実装されたインターフェイスを追加します。
インターフェイスには、基本インターフェイスを追加します。
派生型
クラスには、派生クラスを追加します。
インターフェイスには、派生インターフェイスと実装するクラスまたは構造体追加します。
すべての基本データ型
基本クラスまたはインターフェイスの階層を再帰的に追加します。
すべての派生型
クラスでは、すべての派生クラスを再帰的に追加します。
インターフェイスの場合は、すべての派生インターフェイスをクラスまたは構造体再帰的に実行する追加します。
コンテインメント階層構造
親コンテナーの階層を追加します。
使用される型
すべてのクラスおよびこのクラスを使用するメンバーを追加します。
型で使用
このクラスを使用するメンバーとすべてのクラスを追加します。
メソッドの場合、選択する:
コンテインメント階層構造
親コンテナーの階層を追加します。
呼び出された Methods
このメソッドが呼び出すメソッド追加。
メソッドを呼び出して
このメソッドを呼び出すメソッド追加。
基本型でオーバーライドされたメソッド
他のメソッドをオーバーライドするか、またはインターフェイスのメソッドを実装するメソッドに対して、オーバーライドされると、指定されている場合、実装されるインターフェイス メソッド追加して、基本クラスのすべての抽象メソッドまたは仮想メソッドが。
ベース磁界
追加のフィールドこのメソッドの参照。
フィールドに、選択する:
コンテインメント階層構造
親コンテナーの階層を追加します。
参照メソッド
このフィールドを参照する追加のメソッド。
参照トピック
アセンブリまたはバイナリ内の特定の依存関係を視覚化します。
[アーキテクチャ] で、メニューの [ウィンドウ]、**[アーキテクチャ エクスプローラー]**を選択します。
最初の列で、**[ファイル システム]の下に、[ファイルの選択]**を選択します。
[開く] ボックスで、アセンブリまたはバイナリを検索し、をクリックします。**[アーキテクチャ エクスプローラー]**の次の列に追加するに [開く] を選択します。
次の列で、アセンブリまたはバイナリを選択します。
既定では、次の列に、選択した項目に含まれている各項目が表示されます。
ヒント 他の関連項目を選択するには、オプションを使用して列の右側に折りたたまれた列を展開します。[ノード ナビゲーション]の下で、目的の種類の項目を選択します。[アウトバウンド ナビゲーション] か [インバウンド ナビゲーション]の下で、目的の種類の関係を選択します。「アーキテクチャ エクスプローラーを使用したコードの検索」を参照してください。
グラフを置くすべての項目を検索し、をクリックします。
新しいグラフを、[アーキテクチャ エクスプローラー] のツール バーで作成するには、[選択したすべてのノードから新しいグラフ ドキュメントを生成します。***を選択します。
Visual Studio は、グラフを作成して開きます。
または
グラフに選択内容を追加するには、次の手順を実行する:
グラフの .dgml ファイル、または 空のグラフを作成します。を開きます。
[アーキテクチャ エクスプローラー] のツール バーで、[現在表示されているグラフ ドキュメントに選択したすべてのノードを追加します。***を選択します。
または
[アーキテクチャ エクスプローラー] からグラフにドラッグされた項目。
C の間の依存関係と C++ のソース ファイルとヘッダー ファイルの視覚化します。
表示する依存関係の対象 |
方法 |
---|---|
ソリューション内のすべてのソース ファイルとヘッダー ファイル |
[アーキテクチャ] で、メニューの [依存関係グラフの生成]、[インクルード ファイルの場合]を選択します。 |
現在開いているファイルと、関連するソース ファイルとヘッダー ファイル |
|
[!メモ]
Visual C++ プロジェクトを含むソリューションを開く場合、IntelliSense データベースの更新に時間がかかる場合があります。この時間の間、IntelliSense データベースの更新が終了するまでヘッダー (.h) ファイルまたは #includeの依存関係グラフを作成できない場合があります。Visual Studio のステータス バーの更新の進行状況を監視できます。IntelliSense の特定の設定が無効になるため、問題を表示またはメッセージを解決するには、[トラブルシューティング]を参照してください。
依存関係グラフの共有
Visual Studio の他のユーザーとグラフを保存、および共有します。
グラフを保存するに [ファイル] のメニューを使用します。
または
特定のプロジェクトの一部としてグラフを保存するには、グラフのショートカット メニューを開きます。グラフを保存する場所 [移動] <DependencyGraphName.dgml> [には] とプロジェクトを選択します。
Visual Studio では、Visual Studio Ultimate、Visual Studio Premium、および Visual Studio Professional の他のユーザーと共有できる .dgml ファイルとしてグラフを保存します。
[!メモ]
Visual Studio Premium、および Visual Studio Professional を使用するユーザーとグラフを共有する前に、グループを展開することを確認します。非表示のノードとグループ間リンクが表示され、が他に、グラフの参照を削除したノードを取得します。それ以外の場合は、他のユーザーはこれらの項目をされません。
モデリング プロジェクト内のグラフまたはモデリング プロジェクトから別の場所にコピーされたグラフを保存すると、次のエラーが発生する可能性があります。
"ファイル名をプロジェクト ディレクトリの外部に保存できません。リンクされた項目はサポートされていません。"
Visual Studio は、エラーを示しますが、保存したバージョンは作成します。このエラーを回避するには、モデリング プロジェクトの外部でグラフを生成します。その後、目的の場所にグラフを保存できます。単にソリューション内の別の場所にファイルをコピーし、その後で保存しようとすると失敗します。
イメージため、Microsoft Word や PowerPoint などの他のアプリケーションに、をコピーできるようなグラフをエクスポート
グラフのショートカット メニューを開きます。[編集]、**[イメージのコピー]**を選択します。
そのイメージを他のアプリケーションに貼り付けます。
XPS ファイルため、Internet Explorer などの XML または XAML ビューアーに表示できるように、グラフのエクスポート
グラフからショートカット メニューを開きます。**[XPS として保存]**を選択します。
[名前を付けて保存] のダイアログ ボックスでは、ファイルの場所に保存するか参照します。
グラフを付けます。[保存の種類] ボックスが **[XPS ファイル (*.xps)]**に設定されていることを確認します。上書き保存を選択します。
バッチ処理のグラフを生成します。
GraphCmd.exe のコマンド ライン ツールを使用してバッチ モードでグラフ ドキュメント (.dgml ファイル) を生成できます。たとえば、後で、各ビルドのビルドで変更された依存関係を検索するツールを実行することができます。このツールは、C:\Program Files\Microsoft Visual Studio 11.0\Common7\IDE フォルダー内にあります。
[!メモ]
GraphCmd.exe は、.NET コードのみをサポートし、アセンブリまたは .dgml ファイルの依存関係情報のみ、Visual Studio ソリューションのソース・コードまたはプロジェクト ファイルを生成します。GraphCmd.exe は、Visual Studio の外部で実行されるので、DGQL のクエリの処理のサポートは制限されています。
GraphCmd.exe には、次の構文を使用する:
GraphCmd -? -all -exceptions -input File_Name -query File_Name -exec "DGQL_Statement" -output File_Name -path alias=path
ヒント |
---|
オプション (-input、-query、-exec、および -path) を複数回指定できます。 |
GraphCmd.exe のオプションの説明を次の表に示します。
-? |
GraphCmd.exe に関するヘルプを表示します。 |
-all |
最終のノード セットだけでなく、すべてのクエリの中間結果を含めます。 |
-exceptions |
クエリの例外をグラフ ドキュメント (.dgml) ファイルとして報告します。 |
-input ファイル名 |
指定された .dgml ファイルを処理します。 これは、Visual Studio で簡単に視覚化できるように大きい .dgml ファイルの後処理およびフィルター処理に役立ちます。 |
-query ファイル名 |
指定された Directed Graph Query Language (DGQL または .dgql) ファイルを実行します。 参照トピック
|
-exec "DGQL ステートメント" |
指定された DGQL ステートメントを実行します。 理解の Directed Graph Query Language (DGQL)を参照してください。 |
-output ファイル名 |
指定された .dgml ファイルを出力します。 |
-path エイリアス=パス |
DGML ドキュメントの入出力で使用する新しいエイリアスを指定します。 次に例を示します。
よく使用されるパスのエイリアスを参照してください。 |
よく使用されるパスのエイリアス
よく使用されるパスのエイリアスを使用すると、.dgml ファイルのサイズを小さくして、ファイルの読み込みまたは保存に必要な時間を短縮することができます。エイリアスを作成するには、.dgml ファイルの末尾に <Paths></Paths> セクションを追加します。このセクションには、パスのエイリアスを定義する <Path/> 要素を追加します。
<Paths>
<Path Id="MyPathAlias" Value="C:\...\..." />
</Paths>
.dgml ファイル内の要素からエイリアスを参照するには、<Path/> 要素の Id をドル記号 ($) とかっこ (()) で囲みます。
<Nodes>
<Node Id="MyNode" Reference="$(MyPathAlias)MyDocument.txt" />
</Nodes>
<Properties>
<Property Id="Reference" Label="My Document" DataType="System.String" IsReference="True" />
</Properties>
.dgml ファイルを編集するには、依存関係グラフの編集およびカスタマイズを参照してください。
Directed Graph Query Language (DGQL) について
DGQL は、DGML の作成に使用できる軽量なクエリ言語です。DGQL ステートメントは、ノード選択およびアクションの交互パターンに従います。これにより、各ノード選択によって次のアクションの入力が生成され、その出力が次のノード選択の入力になります。
DGQL ステートメントの形式は次のとおりです。
<node selection> / <action> / <node selection> / <action> / ...
ノード選択に使用される DGQL の構文を次の表に示します。
* |
すべてのノードを選択します。 |
+ "text" |
"text" を含むすべてのノードを選択します。 |
+ Id.Equals("text") |
Id が "text" と等しいすべてのノードを選択します。 |
+ Background.Contains("text") |
Background 属性の値に文字列 "text" が含まれるすべてのノードを選択します。 |
+ "text1" + "text2" + ... |
"text1" または "text2" に一致するすべてのノードを選択します。 |
+ MyProperty="True" |
MyProperty プロパティの値が "True" であるすべてのノードを選択します。 |
- Label.Contains("text") |
Label 属性に文字列 "text" が含まれる (Contains) ノードを除くすべてのノードを選択します。 |
+ Category.Is("MyCategory") |
MyCategory カテゴリを持つ、または MyCategory を継承するすべてのノードを選択します。 |
選択されたノードで実行できる直接的なアクションの例を次の表に示します。
アクションの例 |
説明 |
---|---|
Microsoft.Contains |
入力ノードに格納されているすべてのノードを返します。Contains を別のリンク カテゴリに置き換えることができます。 |
Microsoft.Open |
入力ノードのソース コードを開きます。
メモ
Visual Studio 内でのみ動作します。
|
Microsoft.AllOutBoundLinks |
入力ノードからの出力リンク先であるすべてのノードを返します。 |
Microsoft.AllInboundLinks |
入力ノードへのリンクのソース端であるすべてのノードを返します。 |
Microsoft.Core.CreateGroupsByProperties |
GroupByProperties アクションを呼び出します。 |
Microsoft.AllNodes |
その時点までのグラフ全体のすべてのノードを返します。 |
データ ドリブン アクションでは、入力ノードおよびリンク内のデータのみに基づいて項目を選択します。データ ドリブン アクションを使用してカテゴリを照合するときは、継承されたカテゴリが含まれます。データ ドリブン アクションの例を次の表に示します。
型 |
説明 |
---|---|
Node:Both:Category |
Category カテゴリを持ち、いずれかの方向を指すリンクによって入力ノードに接続されているすべてのノードを返します。 |
Link:Both:Category |
いずれかの方向を指すリンクによって入力ノードに接続されており、Category カテゴリを持つすべてのノードを返します。 |
Link:Backward:Category |
Category カテゴリを持つリンクを含む入力ノードを指すすべてのノードを返します。 |
Link:Forward:Category |
Category カテゴリを持つリンクを含む入力ノードが指すすべてのノードを返します。 |
ヒント
通常は、指定されたノード セット用の "既定の" アクションがあります。これは、アーキテクチャ エクスプローラーによって自動的に選択されます。同じ振る舞いを取得するには、空のアクション (//) を使用します。
DGQL では空白は重要でないため、必要に応じてクエリを 1 行に収めるように指定できます。これは、GraphCmd で –exec オプションを使用する場合に役立ちます。
DGQL のデバッグ時には、アーキテクチャ エクスプローラーで "Execute Expanded" アクションを使用すると、クエリの各手順を確認して、予想される結果を生成しない手順を見つけることができます。
例
次の DGQL ステートメントでは、クエリを実行します。手順の説明はステートメントの下にあります。
+ Id.Equals("Microsoft.Solution.ClassView") / "Microsoft.Solution.ClassView" / * / "Node:Both:CodeSchema_Class" / + CodeSchemaProperty_IsPublic.Equals("True")
**[アーキテクチャ エクスプローラー]**の最初の列の [クラス ビュー] のノードを選択します。
アクション「ソリューション内のすべての名前空間を返すMicrosoft.Solution.ClassView"を実行します。
* を使用して、すべての名前空間を選択します。
CodeSchema_Class カテゴリを持ち、いずれかの方向を指すリンクによってそれらの名前空間に関連付けられているすべてのノードを選択します。通常、これらはコンテインメント リンクです。
選択されたクラスをフィルター処理して、CodeSchemaProperty_IsPublic="True" プロパティを持つクラスだけを取得します。
"Microsoft.Solution.ClassView" アクションはクラス ビュー ノードの "既定の" アクションであるため、通常は必要ありません。したがって、次に示すように、そのアクションを // に置き換えてクエリを簡略化し、クエリを 1 行に収めることができます。
+Id.Equals("Microsoft.Solution.ClassView")//*/"Node:Both:CodeSchema_Class"/+CodeSchemaProperty_IsPublic.Equals("True")
トラブルシューティング
次の項目は C および C++ コードではサポート:
基本データ型は、親の階層構造を格納したグラフに表示されません。
[表示] のほとんどのメニュー項目は C および C++ コードでは使用できません。
次の問題は、C および C++ のコードの依存関係グラフを生成するときに発生する可能性があります:
懸案事項 |
原因 |
解決策 |
---|---|---|
生成しない依存関係グラフ。 |
ソリューション内のプロジェクトが正常にビルドされます。 |
発生した変更し、グラフをビルド エラーを再現してください。 |
[アーキテクチャ] メニューから依存関係グラフを生成しようとすると、Visual Studio が応答しなくなる。 |
プログラム データベース (.pdb) ファイルが壊れている可能性があります。 .pdb ファイルには、型、メソッド、ソース ファイル情報などのデバッグ情報が格納されます。 「[廃止] プログラム データベース ファイル (C++)」を参照してください。 |
ソリューションを再度ビルドしてから、もう一度実行します。 |
IntelliSense 参照データベースの特定の設定が無効になる。 |
IntelliSense の特定の設定が、Visual Studio の [オプション] ダイアログ ボックスで無効になっている可能性があります。 |
設定をオンにして有効にします。 「[オプション]、[テキスト エディター]、[C/C++]、[詳細]」を参照してください。 |
"不明なメソッド" という内容のメッセージがメソッド ノードで表示される。 この問題は、メソッドの名前を解決できないために発生します。 |
バイナリ ファイルにベース再配置テーブルがない可能性があります。 |
リンカーで /FIXED:NO オプションをオンにします。 「/FIXED (固定ベース アドレス)」を参照してください。 |
プログラム データベース (.pdb) ファイルがビルドされていない可能性があります。 .pdb ファイルには、型、メソッド、ソース ファイル情報などのデバッグ情報が格納されます。 詳細については、「[廃止] プログラム データベース ファイル (C++)」を参照してください。 |
リンカーで /DEBUG オプションをオンにします。 「/DEBUG (デバッグ情報の生成)」を参照してください。 |
|
予想される場所で .pdb ファイルを開くことができないか、ファイルが見つかりません。 |
.pdb ファイルが予想される場所にあることを確認します。 |
|
デバッグ情報が .pdb ファイルから取り除かれています。 |
/PDBSTRIPED オプションをリンカーで使用した場合は、代わりに完全な .pdb ファイルを使用します。 「/PDBSTRIPPED (プライベート シンボルの除去)」を参照してください。 |
|
呼び出し元が関数ではなく、バイナリ ファイル内のサンクまたはデータ セクション内のポインターです。 |
呼び出し元がサンクの場合は、_declspec(dllimport) を使用してサンクの回避を試みます。 参照トピック |
そのほかに何を担当することができますか。
次のに関する情報を取得できますか。
カテゴリ |
リンク |
---|---|
フォーラム |
|
ブログ |