Zuordnen von Abhängigkeiten im Code von Abhängigkeitsdiagrammen
Wenn Sie Abhängigkeiten Ihres Code verstehen möchten, führen Sie die Zuordnung mit Visual Studio Ultimate durch. Wenn Sie Abhängigkeiten Ihres Codes verstehen möchten, stellen Sie diese visuell dar, indem Sie Codezuordnungen erstellen (nur Visual Studio Ultimate). Dadurch können Sie sehen, wie der Code ohne Lesen von Codezeilen und Dateien zusammenpasst.
Hier sind einige Videos:
Sie benötigen folgendes:
Visual C# .NET- oder Visual Basic .NET-Code in einer Lösung oder in Assemblys (.dll oder .exe)
Den systemeigenen oder verwalteten C oder C++-Code in Visual C++-Projekten, Headerdateien (.h oder #include) oder Binärdateien
Visual Studio 2013 Update 3, um folgende Abhängigkeiten zuzuordnen:
Projekte, die Code in mehreren Apps gemeinsam nutzen
Aus .NET-Modulen für Microsoft Dynamics AX erstellte X++-Projekte und X++-Assemblydateien
Sie können auch Assemblys und Binärdateien aus Windows Explorer zu einem vorhandenen Diagramm verschieben und farblich gekennzeichneten Beziehungen erhalten.
Die ersten Schritten finden Sie hier:
Um allgemeine Abhängigkeiten innerhalb Ihrer Lösung zu erkennen, gehen Sie zum Menü Architektur. Klicken Sie auf Abhängigkeitsdiagramm generieren, Für Projektmappe.
- oder -
Um bestimmte Abhängigkeiten in Ihrer Lösung zu erkennen, öffnen Sie den Projektmappen-Explorer. Wählen Sie die Projekte, Assemblyverweise, Ordner, Dateien, Typen oder Mitglieder aus, die Sie interessieren. Klicken Sie in der Symbolleiste Projektmappen-Explorer auf Erstellen eines neuen Diagrammdokuments .
Weitere Möglichkeiten:
Erkennen von Abhängigkeiten zwischen C- oder C++-Quelldateien und Headerdateien
Freigabe von Abhängigkeitsdiagrammen
Erstellen von programmatischen Diagrammen
Erkennen allgemeiner Abhängigkeiten
Erkennen von Abhängigkeiten innerhalb der Lösung
Klicken Sie im Menü Architektur auf Abhängigkeitsdiagramm generieren, Für Projektmappe.
Es wird ein Diagramm dargestellt, in dem die Assemblys der obersten Ebene und die Aggregatlinks zwischen diesen angezeigt werden. Desto größer die Aggregatsverbindung, desto mehr Abhängigkeiten stellt sie dar. Die Gruppe Extern enthält alle Elemente außerhalb der Projektmappe, einschließlich Plattformabhängigkeiten. Für externe Assemblys werden nur die Elemente angezeigt, die verwendet werden.
Zur Detailanzeige eines Assemblys müssen Sie es erweitern. Bewegen Sie den Mauszeiger auf ein Assembly, und klicken Sie dann auf das Chevron (^), wenn es angezeigt wird. (Tastatur: Wählen Sie das Element aus, und drücken Sie dann die Taste PLUS (+).) Gehen Sie bei Namespaces, Typen und Mitglieder genauso vor, um tiefere Ebenen des Codes untersuchen.
Standardmäßig werden Containerbeziehungen als Gruppen dargestellt, die Sie erweitern und reduzieren können. Klicken Sie im Kontextmenü des Diagrammbereichs auf Gruppe, Gruppierung deaktivieren, um die Beziehungen von Gruppen als Links anzuzeigen.
Wählen Sie zum Untersuchen von Elementen und Abhängigkeiten, die durch einen Aggregatlink dargestellt werden, zunächst den Link aus, und öffnen Sie dann das zugehörige Kontextmenü. Klicken Sie auf Anzeigen, Zugehörige Links im aktuellen Diagramm oder Zugehörige Links in einem neuen Diagramm.
Visual Studio erweitert die Gruppen an beiden Enden des Links und zeigt nur die Elemente und Abhängigkeiten an, die zu dem Link gehören.
Weitere Informationen zu einem Element oder einem Link erhalten Sie, indem Sie den Zeiger auf das Element bewegen und warten, bis eine QuickInfo angezeigt wird. Dies zeigt die Kategorien, die durch einen Link darstellt werden.
Klicken Sie auf Legende, um anzuzeigen, was die Farbe von Hyperlinks auf der Symbolleiste des Diagramms bedeutet.
Wenn ein grüner Link angezeigt wird, muss dies nicht bedeuten, dass nur eine Vererbungsbeziehung besteht. Möglicherweise gibt es auch Methodenaufrufe, aber diese sind durch die Vererbungsbeziehung ausgeblendet.
Zum Anzeigen gruppenübergreifender Abhängigkeiten klicken Sie auf ein Element im Diagramm.
Ermitteln potenzieller Probleme in Ihrem Code mit einem Analyzer.
Thema
Finden Sie Abhängigkeiten zwischen Assemblys und Binärdateien
Erstellen Sie ein leeres Diagramm, oder öffnen Sie ein vorhandenes Diagramm (DGML-Datei). Ziehen Sie die Assemblys oder Binärdateien, die sich außerhalb von Visual Studio befinden, in das Diagramm.
Hinweis
Das Ziehen von Assemblys oder Binärdateien aus dem Windows-Explorer ist nur möglich, wenn der Windows-Explorer und Visual Studio auf der gleichen Berechtigungsstufe der Benutzerkontensteuerung (User Account Control, UAC) ausgeführt werden.Beispiel: Wenn Sie Visual Studio bei aktivierter UAC als Administrator ausführen, wird der Ziehvorgang vom Windows-Explorer blockiert.Sie können dieses Problem umgehen, indem Sie sicherstellen, dass Visual Studio als Administrator ausgeführt wird, oder indem Sie die Benutzerkontensteuerung deaktivieren.Beachten Sie, dass der Windows-Explorer dem Datei-Explorer in Windows 8 entspricht.
Erstellen eines leeren Diagramms
Öffnen Sie im Projektmappen-Explorer das Kontextmenü für den Projektmappenknoten auf oberster Ebene. Klicken Sie auf Hinzufügen, Neues Element.
Klicken Sie unter Installiert auf Allgemein.
Klicken Sie im rechten Bereich auf Dokument mit gerichtetem Diagramm.
Sie haben jetzt ein leeres Diagramm, das in der Projektmappe im Ordner Projektmappenelemente angezeigt wird.
Klicken Sie im Menü Datei auf Neu, Datei, um ein neues leeres Diagramm zu öffnen, ohne es der Projektmappe hinzuzufügen.
Zum Hinzufügen eines leeren Diagramms zu einem Modellierungsprojekt öffnen Sie das Menü Architektur und klicken auf Neues Diagramm.
Fragen und Antworten
F: Warum dauert das Erstellen eines Diagramms so lange?
A: Wenn Sie ein Diagramm zum ersten Mal generieren, werden von Visual Studio alle gefundenen Abhängigkeiten indiziert. Dieser Vorgang kann einige Zeit dauern, besonders bei großen Projektmappen, aber dies verbessert die Leistung zu einem späteren Zeitpunkt. Wenn Ihr Code geändert wird, wird von Visual Studio nur der aktualisierte Code neu indiziert. Wenn Sie nicht warten möchten, bis die Generierung des Diagramms beendet ist, können Sie diesen Schritt jederzeit abbrechen und stattdessen Folgendes versuchen:
Erstellen Sie nur für die Abhängigkeiten ein Diagramm, die Sie interessieren.
Bevor Sie das Diagramm für eine gesamte Projektmappe generieren, reduzieren Sie den Umfang der Projektmappe.
Obwohl Visual Studio mit 1 GB Arbeitsspeicher ausgeführt werden kann, wird empfohlen, den Computer mit mindestens 2 GB Arbeitsspeicher auszustatten, um lange Verzögerungen während des Erstellens des Codeindexes und der Generierung des Diagramms durch Visual Studio zu vermeiden.
Es kann mehr Zeit in Anspruch nehmen, im Projektmappen-Explorer Diagramme zu erstellen oder einem Diagramm Elemente hinzuzufügen, wenn für die Eigenschaft In Ausgabeverzeichnis kopieren eines Projektelements Immer kopieren festgelegt wurde. Dies kann zu Problemen mit inkrementellen Builds und Visual Studio führen, das Projekt jedes Mal neu zu erstellen. Ändern Sie diese Eigenschaft in Kopieren, wenn neuer oder PreserveNewest, um die Leistung zu erhöhen. Siehe Inkrementelle Builds.
F: Warum hat Visual Studio mein Diagramm nicht erstellt?
A: Der Grund kann sein, dass keines der Projekte in Ihrer Projektmappe erfolgreich erstellt wurde. Ein Diagramm wird von Visual Studio generiert, wenn der Buildvorgang für mindestens ein Projekt erfolgreich ausgeführt werden kann. Das Diagramm zeigt die Abhängigkeiten nur für Code, der erfolgreich erstellt wurde. Wenn für bestimmte Komponenten Erstellungsfehler auftreten, werden diese Fehler für diese Komponenten im Diagramm angezeigt. Vergewissern Sie sich, dass eine Komponente tatsächlich erstellt wird und über Abhängigkeiten verfügt, bevor Sie auf Grundlage des Diagramms architekturbezogene Entscheidungen treffen.
Anzeigen bestimmter Abhängigkeiten
Angenommen, Sie müssen eine Codeüberprüfung in einigen Dateien mit ausstehenden Änderungen durchführen. Um die Abhängigkeiten in diesen Änderungen anzuzeigen, erstellen Sie aus diesen Dateien ein Abhängigkeitsdiagramm.
Anzeigen bestimmter Abhängigkeiten in Ihrer Projektmappe
Öffnen Sie den Projektmappen-Explorer. Wählen Sie die Projekte, Assemblyverweise, Ordner, Dateien, Typen und Mitglieder, die Sie interessieren.
Stellen Sie ihre Artikel und deren Elemente im Diagramm graphisch dar. Klicken Sie in der Symbolleiste Projektmappen-Explorer auf Erstellen eines neuen Diagrammdokuments .
Zum Suchen von Elementen mit Abhängigkeiten von Typen oder Mitglied öffnen Sie das Kontextmenü für den Typ oder Mitglieder im Projektmappen-Explorer. Klicken Sie auf den Abhängigkeitstyp. Wählen Sie dann die Ergebnisse aus.
Zum Einbeziehen der übergeordneten Hierarchien in Ihre Elemente öffnen Sie in der Symbolleiste des Projektmappen-Explorers die Liste Neues Diagrammdokument erstellen.... Klicken Sie auf Neues Abhängigkeitsdiagramm mit Vorgängern.
Sie können Elemente auch in ein leeres oder vorhandenes Diagramm ziehen. Sie können ein leeres Diagramm erstellen, indem Sie im Menü Datei auf Neu, Datei, Dokument mit gerichtetem Diagramm klicken. Halten Sie die STRG-TASTE gedrückt, während Sie Elemente ziehen, um die übergeordnete Hierarchie für die Elemente einzuschließen.
Hinweis
Wenn Sie Elemente aus einem Projekt hinzufügen, das von mehreren Apps wie Windows Phone oder Windows Store gemeinsam genutzt wird, werden diese Elemente mit dem derzeit aktiven App-Projekt in der Zuordnung angezeigt.Wenn Sie den Kontext für ein anderes App-Projekt ändern und mehrere Elemente aus dem freigegebenen Projekt hinzufügen, werden diese Elemente nun mit dem neuen aktiven App-Projekt angezeigt.Vorgänge, die Sie mit einem Element in der Zuordnung ausführen, gelten nur für solche Elemente, die denselben Kontext gemeinsam verwenden.
Um Elemente zu untersuchen, erweitern Sie diese. Bewegen Sie den Mauszeiger auf ein Element, dann klicken Sie auf die Schaltfläche Chevron (^), wenn sie angezeigt wird. Öffnen Sie das Kontextmenü für das Diagramm, um alle Elemente zu erweitern. Klicken Sie auf Gruppe, Alle erweiternl.
Hinweis
Diese Option ist nicht verfügbar, wenn das Erweitern aller Gruppen zu einem nicht verwendbaren Diagramm oder zu Speicherproblemen führt.
Klicken Sie zum Anzeigen von Mitgliedern, die sich im Code befinden, aber nicht im Diagramm erscheinen, auf Untergeordnete Objekte auffrischen . Diese Gruppenmitglieder werden mit einem anderen Format angezeigt, damit Sie besser zu sehen sind. Siehe Bearbeiten und Anpassen von Abhängigkeitsdiagrammen.
Öffnen Sie das Kontextmenü dieses Elements, um weitere Elemente im Zusammenhang mit den Diagramm anzuzeigen. Klicken Sie auf Anzeigen und die Art von Beziehung, die Sie interessiert.
Für ein Assembly klicken Sie auf:
Assemblys, auf die verwiesen wird
Fügt Assemblys hinzu, auf die diese Assembly verweist. Externe Assemblys werden in der Gruppe Extern angezeigt.
Referenzierende Assemblys
Fügt Assemblys in der Projektmappe hinzu, die auf diese Assembly verweisen.
Für eine Klasse klicken Sie auf:
Basistypen
Fügt einer Klasse die Basisklasse und die implementierten Schnittstellen hinzu.
Fügt einer Schnittstelle die Basisschnittstellen hinzu.
Abgeleitete Typen
Fügt bei einer Klasse die abgeleiteten Klassen hinzu.
Fügt bei einer Schnittstelle die abgeleiteten Schnittstellen und die implementierenden Klassen oder Strukturen hinzu.
Alle Basistypen
Fügt die Basisklasse oder die Schnittstellenhierarchie rekursiv hinzu.
Alle abgeleiteten Typen
Fügt bei einer Klasse alle abgeleiteten Klassen rekursiv hinzu.
Fügt bei einer Schnittstelle alle abgeleiteten Schnittstellen und die implementierenden Klassen oder Strukturen rekursiv hinzu.
Kapselungshierarchie
Fügt die übergeordnete Containerhierarchie hinzu.
Verwendete Typen
Fügt alle Klassen und deren Mitglieder hinzu, die diese Klasse verwendet.
"Verwendet von"-Typen
Fügt alle Klassen und deren Mitglieder hinzu, die diese Klasse verwenden.
Für eine Methode klicken Sie auf:
Kapselungshierarchie
Fügt die übergeordnete Containerhierarchie hinzu.
Aufgerufene Methoden
Fügt die Methoden hinzu, die diese Methode aufruft.
Called-By-Methoden
Fügt die Methoden hinzu, die diese Methode aufrufen.
Überschriebene Methoden in Basistypen
Fügt bei einer Methode, die andere Methoden überschreibt oder die Methode einer Schnittstelle implementiert, alle abstrakten oder virtuellen Methoden in Basisklassen, die überschrieben werden, und ggf. die Methode der Schnittstelle, die implementiert wird, hinzu.
Referenzierte Felder
Fügt die Felder hinzu, auf die diese Methode verweist.
Für ein Feld klicken Sie auf:
Kapselungshierarchie
Fügt die übergeordnete Containerhierarchie hinzu.
Referenzierende Methoden
Fügt die Methoden hinzu, die auf dieses Feld verweisen.
Anzeigen bestimmter Abhängigkeiten in Assemblys oder Binärdateien
Klicken Sie im Menü Architektur auf Fenster, Architektur-Explorer.
Klicken Sie in der ersten Spalte unter Dateisystem auf Dateien auswählen.
Suchen Sie im Feld Öffnen die Assemblys oder Binärdateien, und wählen Sie diese aus. Klicken Sie auf Öffnen, um sie der nächsten Spalte im Architektur-Explorer hinzuzufügen.
Wählen Sie in der nächsten Spalte die Assemblys oder Binärdateien aus.
Standardmäßig werden in der nächsten Spalte die Elemente angezeigt, die in den ausgewählten Elementen enthalten sind.
Tipp
Erweitern Sie zum Auswählen anderer zugehöriger Elemente die reduzierte Spalte rechts neben der Spalte mit den ausgewählten Elementen.Wählen Sie unter Knotennavigation die Elementarten aus, die Sie interessieren.Wählen Sie unter Ausgehende Navigation oder Eingehende Navigation die Beziehungsarten aus, die Sie interessieren.Siehe Suchen von Code im Architektur-Explorer.
Suchen Sie alle Elemente, die Sie in das Diagramm aufnehmen möchten, und wählen Sie diese aus.
Klicken Sie zum Erstellen eines neuen Diagramms auf der Symbolleiste Architektur-Explorer auf Erstellen eines neues Diagrammdokuments aus allen ausgewählten Knoten .
- oder -
Führen Sie die folgenden Schritte aus, um die Auswahl einem Diagramm hinzuzufügen:
Öffnen Sie die DGML-Datei des Diagramms, oder erstellen Sie ein leeres Diagramm.
Klicken Sie auf der Symbolleiste des Architektur-Explorers auf Hinzufügen aller ausgewählten Knoten zum derzeit angezeigten Diagrammdokument .
- oder -
Ziehen Sie Elemente aus dem Architektur-Explorer in das Diagramm.
Anzeigen von Abhängigkeiten zwischen C- und C++-Quelldateien und Headerdateien
Wenn Sie ausführlichere Diagramme für C++-Projekte erstellen möchten, aktivieren Sie für diese Projekte die Compiler-Option zum Durchsuchen von Informationen (/FR). Siehe /FR, /Fr (SBR-Datei erstellen). Andernfalls werden Sie anhand einer Meldung aufgefordert, diese Option festzulegen. Bei Auswahl von OK wird die Option nur für das aktuelle Diagramm festgelegt. Sie können die Nachricht für alle späteren Grafiken ausblenden. Wenn Sie diese Meldung ausblenden, können Sie diese auch wieder einblenden. Legen Sie den folgenden Registrierungsschlüssel auf 0 fest oder löschen Sie den Schlüssel:
HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\12.0\NativeProvider : AutoEnableSbr
Wenn Sie eine Projektmappe öffnen, die Visual C++-Projekte enthält, könnte die Aktualisierung der IntelliSense-Datenbank etwas Zeit beanspruchen. Während dieser Zeit können möglicherweise keine Abhängigkeitsdiagramme für Headerdateien (Dateierweiterung ".h" oder #include) erstellt werden, bis die Aktualisierung der IntelliSense-Datenbank abgeschlossen ist. Sie können den Status der Aktualisierung in der Statusleiste von Visual Studio überwachen. Informationen zum Lösen von Probleme oder zu Meldungen, die angezeigt werden, weil bestimmte IntelliSense-Einstellungen deaktiviert sind, finden Sie unter Problembehandlung bei Diagrammen für C- und C++-Code.
Um Abhängigkeiten zwischen allen Quelldateien und Headerdateien in Ihrer Projektmappe anzuzeigen, klicken Sie im Menü Architektur auf Abhängigkeitsdiagramm generieren, Für Includedatei.
Um Abhängigkeiten zwischen den aktuell geöffneten Datei und zugehörige Quelldateien und Headerdateien anzuzeigen, öffnen Sie die Quelldatei oder die Header-Datei. Öffnen Sie das Kontextmenü "Datei" an einer beliebigen Stelle in der Datei. Klicken Sie auf Diagramm für Includedateien generieren.
Fehlersuchdiagramme für C- und C++-Code
Diese Elemente werden für C- und C++-Code nicht unterstützt:
Basistypen werden in Diagrammen, die die übergeordnete Hierarchie enthalten, nicht angezeigt.
Die meisten Elemente im Menü Anzeigen sind für C- und C++-Code nicht verfügbar.
Diese Probleme können auftreten, wenn Sie Abhängigkeitsdiagramme für C- und C++-Code erstellen:
Problem |
Mögliche Ursache |
Lösung |
---|---|---|
Das Abhängigkeitsdiagramm konnte nicht generiert werden. |
Kein Projekt in der Projektmappe wurde erfolgreich erstellt. |
Korrigieren Sie die aufgetretenen Buildfehler, und generieren Sie dann das Diagramm erneut. |
Visual Studio reagiert nicht mehr, wenn Sie versuchen, im Menü Architektur ein Abhängigkeitsdiagramm zu generieren. |
Die Programmdatenbankdatei (.pdb) ist möglicherweise beschädigt. In einer PDB-Datei werden Debuginformationen gespeichert, z. B. Typ, Methode und Quelldateiinformationen. |
Erstellen Sie die Projektmappe neu, und versuchen Sie es dann erneut. |
Bestimmte Einstellungen für die IntelliSense-Suchdatenbank sind deaktiviert. |
Bestimmte IntelliSense-Einstellungen sind im Dialogfeld Optionen von Visual Studio möglicherweise deaktiviert. |
Aktivieren Sie die Einstellungen, um sie verfügbar zu machen. |
Die Meldung Unbekannte Methode wird in einem Methodenknoten angezeigt. Dieses Problem tritt auf, da der Name der Methode nicht aufgelöst werden kann. |
Die Binärdatei weist möglicherweise keine Basisverschiebungstabelle auf. |
Aktivieren Sie die Option /FIXED:NO im Linker. Siehe /FIXED (Feste Basisadresse). |
Die Programmdatenbankdatei (.pdb) wird möglicherweise nicht erstellt. In einer PDB-Datei werden Debuginformationen gespeichert, z. B. Typ, Methode und Quelldateiinformationen. |
Aktivieren Sie die Option /DEBUG im Linker. |
|
Die PDB-Datei kann an den erwarteten Speicherorten nicht geöffnet oder gefunden werden. |
Stellen Sie sicher, dass die PDB-Datei an den erwarteten Speicherorten vorhanden ist. |
|
Debuginformationen wurden aus der PDB-Datei entfernt. |
Wenn die Option /PDBSTRIPED im Linker verwendet wurde, schließen Sie stattdessen die vollständige PDB-Datei ein. |
|
Der Aufrufer ist keine Funktion und ist entweder ein Thunk in der Binärdatei oder ein Zeiger im Datenabschnitt. |
Wenn der Aufrufer ein Thunk ist, versuchen Sie, den Thunk mithilfe von _declspec(dllimport) zu vermeiden. Thema |
Freigabe von Abhängigkeitsdiagrammen
Das Diagramm für andere Visual Studio-Benutzer freigeben
Verwenden Sie das Menü Datei, um das Diagramm zu speichern.
- oder -
Öffnen Sie das Kontextmenü für die Diagrammoberfläche, um das Diagramm als Teil eines bestimmten Projekts zu speichern. Klicken Sie auf Verschieben <DependencyGraphName.dgml>, in und das Projekt, in dem Sie das Diagramm speichern möchten.
Das Diagramm wird von Visual Studio als DGML-Datei gespeichert, die Sie für andere Benutzer von Visual Studio Ultimate, Visual Studio Premium und Visual Studio Professional freigeben können.
Hinweis
Vergewissern Sie sich, dass alle Gruppen erweitert sind, alle ausgeblendeten Knoten und gruppenübergreifenden Links angezeigt werden, und rufen Sie alle gelöschten Knoten ab, die andere im Diagramm sehen sollen, bevor Sie ein Diagramm für Benutzer von Visual Studio Premium und Visual Studio Professional freigeben.Andernfalls können andere Benutzer diese Elemente nicht sehen.
Wenn Sie ein Diagramm speichern, das sich in einem Modellierungsprojekt befindet oder von einem Modellierungsprojekt an einen anderen Speicherort kopiert wurde, tritt möglicherweise der folgende Fehler auf.
"Dateiname kann nicht außerhalb des Projektverzeichnisses gespeichert werden.Verknüpfte Elemente werden nicht unterstützt."
Der Fehler wird zwar von Visual Studio angezeigt, die Version wird aber dennoch gespeichert.Erstellen Sie das Diagramm außerhalb des Modellierungsprojekts, um diesen Fehler zu vermeiden.Sie können es anschließend am gewünschten Speicherort speichern.Es wird nicht funktionieren, die Datei einfach an eine andere Position in der Projektmappe zu kopieren und dort zu speichern.
Exportieren des Diagramms als Bild, sodass Sie es in andere Anwendungen kopieren können, beispielsweise Microsoft Word oder PowerPoint
Öffnen Sie das Kontextmenü der Diagrammoberfläche. Klicken Sie auf Bearbeiten, Bild kopieren.
Fügen Sie das Bild in eine andere Anwendung ein.
Exportieren Sie das Diagramm als XPS-Datei, damit Sie es in XML- oder XAML-Viewern wie Internet Explorer anzeigen können
Öffnen Sie das Kontextmenü der Diagrammoberfläche. Klicken Sie auf Als XPS speichern.
Durchsuchen Sie nach dem Ort, an dem die Datei gespeichert werden soll.
Benennen Sie das Diagramm. Vergewissern Sie sich, dass im Feld Dateityp die Option XPS-Dateien (*.xps) festgelegt ist. Klicken Sie auf Speichern.
Erstellen von programmatischen Diagrammen
Um Diagrammdokumente (.dgml-Dateien) zu erstellen und während der Stapelverarbeitung andere Arbeiten ausführen zu können, führen Sie das Befehlszeilentool GraphCmd.exe aus. Wenn Sie beispielsweise Abhängigkeiten finden möchten, die sich zwischen Builds geändert haben, führen Sie das Tool nach jedem Build aus. Dieses Tool befindet sich im Ordner: "C:\Program Files\Microsoft Visual Studio 12.0\Common7\IDE".
"GraphCmd.exe" unterstützt ausschließlich .NET-Code und generiert nur Abhängigkeitsinformationen für Assemblys und DGML-Dateien, nicht jedoch für Quellcode in Visual Studio-Projektmappen oder -Projektdateien. "GraphCmd.exe" wird außerhalb von Visual Studio ausgeführt. Daher ist die Unterstützung von Aktionen in DGQL-Abfragen eingeschränkt.
Die Syntax für GraphCmd.exe lautet:
GraphCmd -? -all -exceptions -input File_Name -query File_Name -exec "DGQL_Statement" -output File_Name -path alias=path
Hier sind die Optionen für GraphCmd.exe:
Sie können diese Optionen mehrmals angeben: -input, -query, -exec und -path
-? |
Zeigt die Hilfe für GraphCmd.exe an. |
-all |
Schließt alle Zwischenergebnisse von Abfragen ein, nicht nur für die letzte Knotengruppe. |
-exceptions |
Erstellt einen Bericht über Abfrageausnahmen in einem Diagrammdokument (DGML-Datei). |
-input Datei_Name |
Verarbeitet die angegebene DGML-Datei. Dies ist hilfreich für die Nachbearbeitung und das Filtern einer großen DGML-Datei, sodass sie in Visual Studio leichter visualisiert werden kann. |
-query Datei_Name |
Führt die angegebene DGQL (Directed Graph Query Language)-Datei aus. Thema
|
-exec "DGQL_Anweisung" |
Führt die angegebene DGQL-Anweisung aus. Siehe Grundlegendes zur Directed Graph Query Language (DGQL). |
-output Datei_Name |
Gibt die angegebene DGML-Datei aus. |
-path Aliasname=Pfad |
Geben Sie einen neuen Alias an, der in der Eingabe und der Ausgabe von DGML-Dokumenten verwendet werden soll. Beispiel:
Siehe Aliase für häufig verwendete Pfade. |
Aliase für häufig verwendete Pfade
Aliase für häufig verwendete Pfade tragen dazu bei, die Größe der DGML-Datei und die erforderliche Zeit zum Laden und Speichern der Datei zu reduzieren. Fügen Sie zum Erstellen eines Alias am Ende der DGML-Datei einen <Paths></Paths>-Abschnitt hinzu. Fügen Sie in diesem Abschnitt ein <Path/>-Element hinzu, um einen Alias für den Pfad zu definieren:
<Paths>
<Path Id="MyPathAlias" Value="C:\...\..." />
</Paths>
Schließen Sie die Id des <Path/>-Elements in ein Dollarzeichen ($) und Klammern (()) ein, um von einem Element in der DGML-Datei auf den Alias zu verweisen:
<Nodes>
<Node Id="MyNode" Reference="$(MyPathAlias)MyDocument.txt" />
</Nodes>
<Properties>
<Property Id="Reference" Label="My Document" DataType="System.String" IsReference="True" />
</Properties>
Informationen zum Bearbeiten von DGML-Dateien finden Sie unter Bearbeiten und Anpassen von Abhängigkeitsdiagrammen.
Erfahren Sie mehr über Directed Graph Query Language (DGQL)
DGQL ist eine einfache Abfragesprache, mit der Sie DGML erstellen können. Eine DGQL-Anweisung folgt einem abwechselnden Muster von Knotenauswahl und Aktionen, sodass durch jede Knotenauswahl die Eingabe für die nächste Aktion erstellt wird, deren Ausgabe wiederum zur Eingabe der nächsten Knotenauswahl wird, usw.
Eine DGQL-Anweisung liegt in folgendem Format vor:
<node selection> / <action> / <node selection> / <action> / ...
In der folgenden Tabelle wird die DGQL-Syntax zum Auswählen von Knoten beschrieben:
* |
Wählt alle Knoten aus. |
+ "text" |
Wählt alle Knoten aus, die "text" enthalten. |
+ Id.Equals("text") |
Wählt alle Knoten aus, deren Id gleich "text" ist. |
+ Background.Contains("text") |
Wählt alle Knoten aus, deren Background-Attribut über einen Wert verfügt, der die Zeichenfolge "text" enthält. |
+ "text1" + "text2" + ... |
Wählt alle Knoten aus, die mit "text1" oder "text2" übereinstimmen. |
+ MyProperty="True" |
Wählt alle Knoten aus, die über eine Eigenschaft mit dem Namen MyProperty verfügen, deren Wert "True" ist. |
- Label.Contains("text") |
Wählt alle Knoten mit Ausnahme der Knoten aus, die über ein Label-Attribut verfügen, das die Zeichenfolge "text" enthält (Contains). |
+ Category.Is("MyCategory") |
Wählt alle Knoten aus, die über eine Kategorie mit dem Namen MyCategory bzw. eine Kategorie verfügen, die von MyCategory erbt. |
In der folgenden Tabelle werden Beispiele für direkte Aktionen beschrieben, die für ausgewählte Knoten ausgeführt werden können:
Beispielaktion |
Beschreibung |
---|---|
Microsoft.Contains |
Gibt alle Knoten zurück, die in den Eingabeknoten enthalten sind. Sie können Contains durch eine andere Linkkategorie ersetzen. |
Microsoft.Open |
Öffnet den Quellcode für die Eingabeknoten. Hinweis Funktioniert nur innerhalb von Visual Studio. |
Microsoft.AllOutBoundLinks |
Gibt alle Knoten zurück, die das Ziel eines von den Eingabeknoten ausgehenden Links sind. |
Microsoft.AllInboundLinks |
Gibt alle Knoten zurück, die das Quellende eines Links zu den Eingabeknoten sind. |
Microsoft.Core.CreateGroupsByProperties |
Ruft die GroupByProperties-Aktion auf. |
Microsoft.AllNodes |
Gibt alle Knoten im gesamten Diagramm bis zu dieser Position zurück. |
Von datengesteuerten Aktionen werden Elemente lediglich auf der Grundlage der Daten in den Eingabeknoten und Links ausgewählt. Beim Vergleichen von Kategorien mit datengesteuerten Aktionen werden geerbte Kategorien eingeschlossen. In der folgenden Tabelle werden Beispiele für datengesteuerte Aktionen beschrieben:
Typ |
Beschreibung |
---|---|
Node:Both:Category |
Gibt alle Knoten zurück, die über die Kategorie Category verfügen und mit den Eingabeknoten über einen Link verbunden sind, der in beide Richtungen zeigt. |
Link:Both:Category |
Gibt alle Knoten zurück, die mit den Eingabeknoten über einen Link verbunden sind, der in beide Richtungen zeigt und der die Kategorie Category aufweist. |
Link:Backward:Category |
Gibt alle Knoten zurück, die auf die Eingabeknoten mit einem Link zeigen, der die Kategorie Category aufweist. |
Link:Forward:Category |
Gibt alle Knoten zurück, die von den Eingabeknoten mit einem Link zeigen, der die Kategorie Category aufweist. |
Tipps
In der Regel gibt es für eine bestimmte Gruppe von Eingabeknoten eine "Standardaktion", die vom Architektur-Explorer automatisch ausgewählt wird. Wenn Sie dasselbe Verhalten erhalten möchten, verwenden Sie eine leere Aktion: //
Leerzeichen sind in DGQL irrelevant, sodass Sie Abfragen so formatieren können, dass sie ggf. auf eine Zeile passen. Dies ist hilfreich, wenn Sie die –exec-Option mit GraphCmd verwenden.
Verwenden Sie beim Debuggen von DGQL die Aktion "Execute Expanded" im Architektur-Explorer, sodass Sie jeden einzelnen Schritt der Abfrage verfolgen und Schritte erkennen können, die nicht die erwarteten Ergebnisse liefern.
Beispiel
Die folgende DGQL-Anweisung führt eine Abfrage entsprechend der Beschreibung in den unten stehenden Schritten aus:
+ Id.Equals("Microsoft.Solution.ClassView") / "Microsoft.Solution.ClassView" / * / "Node:Both:CodeSchema_Class" / + CodeSchemaProperty_IsPublic.Equals("True")
Klicken Sie auf den Knoten Klassenansicht in der ersten Spalte des Architektur-Explorers.
Führen Sie die Aktion "Microsoft.Solution.ClassView"" aus, durch die alle Namespaces in der Projektmappe zurückgegeben werden.
Verwenden Sie *, um alle Namespaces auszuwählen.
Wählen Sie alle Knoten mit der Kategorie CodeSchema_Class aus, und die durch einen Link in eine beliebige Richtung mit diesen Namespaces verknüpft sind. Diese sind normalerweise Links mit Kapselungsbeziehungen.
Filtern Sie die erhaltenen Klassen, um nur die Klassen mit der Eigenschaft CodeSchemaProperty_IsPublic="True" zu erhalten.
In technischer Hinsicht ist die Aktion "Microsoft.Solution.ClassView" nicht erforderlich, da es sich hierbei um die "Standardaktion" für den Knoten Klassenansicht handelt. Daher können Sie diese Aktion durch // ersetzen, um die Abfrage zu vereinfachen und sie wie folgt auf einer einzelnen Zeile zu formatieren:
+Id.Equals("Microsoft.Solution.ClassView")//*/"Node:Both:CodeSchema_Class"/+CodeSchemaProperty_IsPublic.Equals("True")
Welche weiteren Möglichkeiten gibt es?
Wo kann ich weitere Informationen abrufen?
Kategorie |
Links |
---|---|
Foren |
|
Blogs |