Zuordnen von Abhängigkeiten mit Code Maps
Gilt für: Visual Studio
Visual Studio für Mac
Visual Studio Code
In diesem Artikel erfahren Sie, wie Sie Abhängigkeiten in Ihrem Code mit Codezuordnungen visualisieren.
Was sind Codezuordnungen?
In Visual Studio helfen Ihnen Codezuordnungen schneller zu sehen, wie Ihr Programmcode zusammenpasst, ohne Dateien und Codezeilen zu lesen. Mit diesen Karten können Sie die Organisation und Beziehungen in Ihrem Code sehen, einschließlich seiner Struktur und seiner Abhängigkeiten, wie sie aktualisiert werden, und die Kosten der vorgeschlagenen Änderungen schätzen.
Codeabhängigkeiten können in folgenden Sprachen durch Code Maps dargestellt werden:
Visual C# oder Visual Basic in einer Lösung oder Assemblys (.dll oder .exe)
Systemeigener oder verwalteter C- oder C++-Code in Visual C++-Projekten, Headerdateien (H oder ) oder
#include
BinärdateienAus .NET-Modulen für Microsoft Dynamics AX erstellte X++-Projekte und X++-Assemblydateien
Hinweis
Für Andere Projekte als C# oder Visual Basic gibt es weniger Optionen zum Starten einer Codezuordnung oder zum Hinzufügen von Elementen zu einer vorhandenen Codezuordnung. Beispielweise können Sie nicht mit der rechten Maustaste auf ein Objekt im Text-Editor eines C++-Projekts klicken, es einer Code Map hinzuzufügen. Sie können jedoch einzelne Codeelemente oder Dateien aus dem Projektmappen-Explorer, der Klassenansicht und dem Objektbrowser ziehen und ablegen.
Voraussetzungen
Um eine Codezuordnung in Visual Studio zu erstellen, installieren Sie zuerst die Codezuordnungs- und Live-Abhängigkeitsüberprüfungskomponenten.
Zum Erstellen und Bearbeiten von Codezuordnungen benötigen Sie Visual Studio Enterprise Edition. In Visual Studio Community- und Professional-Editionen können Sie jedoch Diagramme öffnen, die in der Enterprise-Edition generiert wurden, aber Sie können sie nicht bearbeiten.
Hinweis
Bevor Sie Karten freigeben, die in Visual Studio Enterprise erstellt wurden, für andere Personen, die Visual Studio Professional verwenden, stellen Sie sicher, dass alle Elemente auf der Karte (z. B. ausgeblendete Elemente, erweiterte Gruppen und Gruppenübergreifende Links) sichtbar sind.
Hinzufügen einer Codezuordnung
Sie können eine leere Codezuordnung erstellen und Elemente darauf ziehen, einschließlich Assemblyverweise, Dateien und Ordnern, oder Sie können eine Codezuordnung für alle oder teile Ihrer Lösung generieren.
So fügen Sie eine leere Codezuordnung hinzu:
Öffnen Sie im Projektmappen-Explorerdas Kontextmenü für den Projektmappenknoten auf oberster Ebene. Wählen Sie"Neues Elementhinzufügen"> aus.
Wählen Sie im Dialogfeld " Neues Element hinzufügen " unter "Installiert" die Kategorie "Allgemein " aus.
Wählen Sie die Vorlage "Directed Graph Document(.dgml)" aus, und wählen Sie dann "Hinzufügen" aus.
Tipp
Diese Vorlage wird möglicherweise nicht alphabetisch angezeigt. Scrollen Sie also nach unten in der Vorlagenliste, wenn sie nicht angezeigt wird.
Eine leere Karte wird im Ordner "Lösungselemente " ihrer Lösung angezeigt.
Ebenso können Sie eine neue Codezuordnungsdatei erstellen, ohne sie ihrerLösung hinzuzufügen, indem Sie "Neue Codezuordnung" > oder "NeueDatei" >> auswählen.
Weitere Informationen:
Generieren einer Codezuordnung für Ihre Lösung
So sehen Sie alle Abhängigkeiten in Ihrer Lösung:
Wählen Sie auf der Menüleiste " Architektur>Codezuordnung für Lösung generieren" aus. Wenn sich Ihr Code seit dem letzten Erstellen nicht geändert hat, können Sie stattdessen "Codezuordnung>für Projektmappe generieren" auswählen.
Eine Karte wird generiert, die die Assemblys auf oberster Ebene und aggregierte Verknüpfungen zwischen ihnen anzeigt. Desto größer die Aggregatsverbindung, desto mehr Abhängigkeiten stellt sie dar.
Mit der Schaltfläche Legende auf der Symbolleiste der Code Map können Sie die Liste der Projekttypsymbole (z. B. Test, Web und Phone-Projekt), der Codeelemente (z. B. Klassen, Methoden und Eigenschaften) sowie der Beziehungstypen (z. B. Erbt von, Implementiert und Aufrufe) anzeigen oder ausblenden.
Diese Beispielprojektmappe enthält Projektmappenordner (Tests und Komponenten), Testprojekte, Webprojekte und Assemblys. Standardmäßig werden alle Einschlussbeziehungen als Gruppendargestellt, die Sie erweitern und reduzieren können. 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. Standardmäßig werden Systembasistypen auf der Code Map ausgeblendet, um die Übersichtlichkeit zu verbessern.
Um einen Drilldown in der Code Map durchzuführen, erweitern Sie die Gruppen, die Projekte und Assemblys darstellen. Sie können alle Gruppen erweitern, indem Sie durch Drücken von STRG + A alle Knoten auswählen und dann Gruppe, Erweitern im Kontextmenü auswählen.
Allerdings ist dieses Verfahren für große Projektmappen nicht unbedingt hilfreich. Tatsächlich können Sie bei komplexen Projektmappen aufgrund von Speicherbeschränkungen möglicherweise nicht alle Gruppen erweitern. Erweitern Sie in diesem Fall einen einzelnen Knoten, um seinen Inhalt anzuzeigen. Bewegen Sie den Mauszeiger auf einen Knoten, und klicken Sie dann auf das Chevron (Abwärtspfeil), wenn es angezeigt wird.
Alternativ können Sie die Tastatur verwenden, indem Sie das Element auswählen und dann die Plus-Taste (+) drücken. Gehen Sie bei Namespaces, Typen und Mitglieder genauso vor, um tiefere Ebenen des Codes untersuchen.
Tipp
Weitere Informationen zum Arbeiten mit Codezuordnungen mithilfe der Maus, der Tastatur und der Toucheingabe finden Sie unter Durchsuchen und Neuanordnen von Codezuordnungen.
Um die Code Map zu vereinfachen und sich auf einzelne Teile zu konzentrieren, wählen Sie Filter auf der Symbolleiste der Code Map aus, und wählen Sie dann nur die Knoten- und Linktypen aus, die für Sie von Interesse sind. Beispielsweise können Sie alle Projektmappenordner und Assemblycontainer ausblenden.
Sie können die Code Map auch vereinfachen, indem Sie einzelne Gruppen und Elemente ausblenden oder aus der Code Map entfernen, ohne dass sich dies auf den zugrunde liegenden Projektmappencode auswirkt.
Um die Beziehungen zwischen Elementen anzuzeigen, wählen Sie die Elemente in der Code Map aus. Die Farben der Links zeigen die Beziehungstypen an, wie im Bereich Legende dargestellt.
In diesem Beispiel sind die violetten Links Aufrufe, die gepunkteten Links sind Verweise, und die hellblauen Links sind Feldzugriffe. Grüne Links können Vererbung darstellen, oder es kann sich um Aggregatlinks handeln, die mehrere Beziehungstypen (oder Kategorien) angeben.
Tipp
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. Um bestimmte Arten von Links anzuzeigen, verwenden Sie die Kontrollkästchen im Bereich "Filter ", um die Typen auszublenden, an denen Sie nicht interessiert sind.
Weitere Informationen zu einem Element oder einem Link erhalten Sie, indem Sie den Mauszeiger darauf bewegen und warten, bis eine QuickInfo angezeigt wird. Diese enthält Details zu einem Codeelement oder den Kategorien, die ein Link darstellt.
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ü. Wählen Sie Zugehörige Links anzeigen (oder Zugehörige Links auf neuer Code Map anzeigen) aus. Hierdurch werden die Gruppen an beiden Enden des Links erweitert und nur die Elemente und Abhängigkeiten angezeigt, die zu dem Link gehören.
Um sich auf bestimmte Teile der Karte zu konzentrieren, können Sie weiterhin Elemente entfernen, an denen Sie nicht interessiert sind. Wenn Sie z. B. einen Drillinto für die Klassen- und Memberansicht ausführen möchten, filtern Sie einfach alle Namespaceknoten im Bereich Filter .
Eine andere Methode zum Fokussieren einer Code Map einer komplexen Projektmappe besteht darin, eine neue Code Map zu generieren, die ausgewählte Elemente aus einer vorhandenen Code Map enthält. Halten Sie STRG gedrückt, während Sie die Elemente auswählen, die Sie konzentrieren möchten, öffnen Sie das Kontextmenü, und wählen Sie "Neues Diagramm aus Auswahl" aus.
Der enthaltende Kontext wird in die neue Code Map übernommen. Ausblenden von Projektmappenordnern und anderen Containern, die nicht im Bereich "Filter " angezeigt werden sollen.
Erweitern Sie die Gruppen, und wählen Sie Elemente in der Code Map aus, um die Beziehungen anzuzeigen.
Siehe auch:
- Durchsuchen und Neuanordnen von Code Maps
- Anpassen von Code Maps durch Bearbeiten der DGML-Dateien
- Suchen potenzieller Probleme in Ihrem Code durch Ausführen einer Analyse
Anzeigen von Abhängigkeiten
Angenommen, Sie haben eine Codeüberprüfung, die in einigen Dateien mit ausstehenden Änderungen ausgeführt werden soll. Um die Abhängigkeiten in diesen Änderungen anzuzeigen, können Sie eine Code Map aus diesen Dateien erstellen.
Wählen Sie im Projektmappen-Explorer die Projekte, Assemblyverweise, Ordner, Dateien, Typen oder Elemente aus, die Sie zuordnen möchten.
Wählen Sie auf der Symbolleiste des Projektmappen-Explorersdie Option "Auf Codezuordnung
anzeigen" aus. Oder öffnen Sie das Kontextmenü für eine oder eine Gruppe von Elementen, und wählen Sie "Auf Codezuordnung anzeigen" aus.
Sie können Elemente auch aus dem Projektmappen-Explorer, der Klassenansicht oder dem Objektbrowser in eine neue oder vorhandene Codezuordnung ziehen. Wenn Sie die übergeordnete Hierarchie für Ihre Elemente einschließen möchten, halten Sie die STRG-TASTE gedrückt, während Sie Elemente ziehen, oder verwenden Sie die Schaltfläche " Eltern einschließen " auf der Codezuordnungssymbolleiste, um die Standardaktion anzugeben. Sie können Assemblydateien auch von außerhalb von Visual Studio ziehen, z. B. aus Dem Windows-Explorer.
Hinweis
Wenn Sie Elemente aus einem Projekt hinzufügen, das über mehrere Apps hinweg freigegeben wird, z. B. Windows Phone oder Microsoft Store, werden diese Elemente auf der Karte mit dem aktuell aktiven App-Projekt 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.
Die Code Map zeigt die ausgewählten Elemente in ihren enthaltenden Assemblys.
Um Elemente zu untersuchen, erweitern Sie diese. Bewegen Sie den Mauszeiger auf ein Element, und klicken Sie dann auf das Chevron (Abwärtspfeil), wenn es angezeigt wird.
Um alle Elemente zu erweitern, wählen Sie sie mithilfe von STRG+A aus, und öffnen Sie dann das Kontextmenü für die Karte, und wählen Sie "Gruppen>erweitern" aus. Diese Option ist jedoch nicht verfügbar, wenn das Erweitern aller Gruppen zu einer nicht verwendbaren Code Map oder zu Speicherproblemen führt.
Erweitern Sie weiterhin Elemente, die Sie interessiert sind, nach Bedarf nach unten auf die Klassen- und Mitgliedsebene.
Um Mitglieder anzuzeigen, die sich im Code befinden, aber nicht auf der Karte angezeigt werden, klicken Sie auf das Symbol
"Untergeordnete Elemente" in der oberen linken Ecke einer Gruppe.
Um weitere Elemente im Zusammenhang mit den auf der Code Map dargestellten anzuzeigen, wählen Sie ein Element aus, wählen Sie Verwandte anzeigen auf der Symbolleiste der Code Map aus, und wählen Sie dann den Typ verwandter Elemente aus, die der Code Map hinzugefügt werden sollen. Wählen Sie alternativ ein oder mehrere Elemente aus, öffnen Sie das Kontextmenü, und wählen Sie dann die Option " Anzeigen " für den Typ verwandter Elemente aus, die der Karte hinzugefügt werden sollen. Beispiel:
Für eine Assemblywählen Sie Folgendes aus:
Option BESCHREIBUNG Assemblys anzeigen, auf die verwiesen wird Fügt Assemblys hinzu, auf die diese Assembly verweist. Externe Assemblys werden in der Gruppe Extern angezeigt. Assemblys anzeigen, die auf diese Funktion verweisen Fügt Assemblys in der Projektmappe hinzu, die auf diese Assembly verweisen. Für einen Namespacewählen Sie Enthaltende Assembly anzeigenaus, falls sie nicht sichtbar ist.
Für eine Klasse oder Schnittstellewählen Sie Folgendes aus:
Option Beschreibung Basistypen anzeigen Fügt einer Klasse die Basisklasse und die implementierten Schnittstellen hinzu.
Fügt einer Schnittstelle die Basisschnittstellen hinzu.Abgeleitete Typen anzeigen Fügt bei einer Klasse die abgeleiteten Klassen hinzu.
Fügt bei einer Schnittstelle die abgeleiteten Schnittstellen und die implementierenden Klassen oder Strukturen hinzu.Typen anzeigen, auf die verwiesen wird Fügt alle Klassen und deren Mitglieder hinzu, die diese Klasse verwendet. Typen anzeigen, die auf diese Funktion verweisen Fügt alle Klassen und deren Mitglieder hinzu, die diese Klasse verwenden. Enthaltenden Namespace anzeigen Fügt den übergeordneten Namespace hinzu. Enthaltende/n Namespace und Assembly anzeigen Fügt die übergeordnete Containerhierarchie hinzu. Alle Basistypen anzeigen Fügt die Basisklasse oder die Schnittstellenhierarchie rekursiv hinzu. Alle abgeleiteten Typen anzeigen 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.Für eine Methodewählen Sie Folgendes aus:
Option BESCHREIBUNG Methode anzeigen, die aufruft Fügt die Methoden hinzu, die diese Methode aufruft. Felder anzeigen, auf die verwiesen wird Fügt die Felder hinzu, auf die diese Methode verweist. Enthaltenden Typ anzeigen Fügt den übergeordneten Typ hinzu. Enthaltende/n Typ, Namespace und Assembly anzeigen Fügt die übergeordnete Containerhierarchie hinzu. Überschriebene Methoden anzeigen 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. Für ein Feld oder eine Eigenschaftwählen Sie Folgendes aus:
Option BESCHREIBUNG Enthaltenden Typ anzeigen Fügt den übergeordneten Typ hinzu. Enthaltende/n Typ, Namespace und Assembly anzeigen Fügt die übergeordnete Containerhierarchie hinzu. Die Beziehungen werden auf der Code Map angezeigt. In diesem Beispiel zeigt die Karte die Methoden, die von der Methode und deren Position in der
Find
Lösung oder extern aufgerufen werden.Um die Code Map zu vereinfachen und sich auf einzelne Teile zu konzentrieren, wählen Sie Filter auf der Symbolleiste der Code Map aus, und wählen Sie dann nur die Knoten- und Linktypen aus, die für Sie von Interesse sind. Deaktivieren Sie z. B. die Anzeige von Projektmappenordnern, Assemblys und Namespaces.
Weitere Informationen
- Freigeben von Code Maps
- Erstellen von Codezuordnungen für C++
- Verbessern der Codezuordnungsleistung
- Verwenden von Code Maps zum Debuggen von Anwendungen
- Zuordnen von Methoden in der Aufrufliste beim Debuggen
- Ermitteln potenzieller Probleme mithilfe von Code Map-Analyzern
- Durchsuchen und Neuanordnen von Code Maps
- Anpassen von Code Maps durch Bearbeiten der DGML-Dateien