Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gründe für die Verwendung von Abhängigkeitsdiagrammen
Um sicherzustellen, dass code nicht mit seinem Entwurf in Konflikt tritt, überprüfen Sie Ihren Code mit Abhängigkeitsdiagrammen in Visual Studio. Dies kann Ihnen helfen:
Suchen Sie Konflikte zwischen Abhängigkeiten in Ihrem Code und Abhängigkeiten vom Abhängigkeitsdiagramm.
Suchen Sie Abhängigkeiten, die möglicherweise von vorgeschlagenen Änderungen betroffen sind.
Sie können z. B. das Abhängigkeitsdiagramm bearbeiten, um potenzielle Architekturänderungen anzuzeigen und dann den Code zu überprüfen, um die betroffenen Abhängigkeiten anzuzeigen.
Code refaktorisieren oder in ein anderes Design migrieren.
Suchen Sie Code oder Abhängigkeiten, die Arbeit erfordern, wenn Sie den Code in eine andere Architektur verschieben.
Anforderungen
Visual Studio
Zum Erstellen eines Abhängigkeitsdiagramms für ein .NET Core-Projekt benötigen Sie Visual Studio 2019, Version 16.2 oder höher.
Eine Lösung mit einem Modellierungsprojekt mit einem Abhängigkeitsdiagramm. Dieses Abhängigkeitsdiagramm muss mit Artefakten in C#- oder Visual Basic-Projekten verknüpft sein, die Sie überprüfen möchten. Siehe Erstellen von Abhängigkeitsdiagrammen aus Ihrem Code.
Welche Editionen von Visual Studio dieses Feature unterstützen, finden Sie unter Edition-Unterstützung für Architektur- und Modellierungstools.
Sie können Code manuell aus einem geöffneten Abhängigkeitsdiagramm in Visual Studio oder über eine Eingabeaufforderung überprüfen. Sie können Code auch automatisch überprüfen, wenn lokale Builds oder Azure Pipelines-Builds ausgeführt werden.
Von Bedeutung
Wenn Sie die Layerüberprüfung mit Team Foundation Server (TFS) ausführen möchten, müssen Sie auch dieselbe Version von Visual Studio auf Ihrem Buildserver installieren.
Live-Abhängigkeitsüberprüfung
Die Abhängigkeitsüberprüfung erfolgt in Echtzeit, und Fehler werden sofort in der Fehlerliste angezeigt.
Die Liveüberprüfung wird für C# und Visual Basic unterstützt.
Um die vollständige Lösungsanalyse bei verwendung der Liveabhängigkeitsüberprüfung zu aktivieren, öffnen Sie die Optioneneinstellungen aus dem Goldbalken, der in der Fehlerliste angezeigt wird.
- Sie können den Goldbalken dauerhaft ausblenden, wenn Sie nicht daran interessiert sind, sich alle Architekturprobleme in Ihrer Lösung anzusehen.
- Wenn Sie keine vollständige Lösungsanalyse aktivieren, erfolgt die Analyse nur für die bearbeiteten Dateien.
Wenn Sie Projekte aktualisieren, um die Liveüberprüfung zu aktivieren, zeigt ein Dialogfeld den Fortschritt der Konvertierung an.
Beim Aktualisieren eines Projekts für die Überprüfung der Liveabhängigkeit wird die Version des NuGet-Pakets aktualisiert, damit es für alle Projekte identisch ist und die höchste verwendete Version ist.
Durch das Hinzufügen eines neuen Abhängigkeitsüberprüfungsprojekts wird eine Projektaktualisierung ausgelöst.
Überprüfen, ob ein Element die Überprüfung unterstützt
Sie können Ebenen mit Websites, Office-Dokumenten, Nur-Text-Dateien und Dateien in Projekten verknüpfen, die für mehrere Apps freigegeben werden, aber der Überprüfungsprozess enthält sie nicht. Überprüfungsfehler werden nicht für Verweise auf Projekte oder Assemblys angezeigt, die mit separaten Ebenen verknüpft sind, wenn keine Abhängigkeiten zwischen diesen Ebenen angezeigt werden. Solche Verweise gelten nicht als Abhängigkeiten, es sei denn, der Code verwendet diese Verweise.
Wählen Sie im Abhängigkeitsdiagramm eine oder mehrere Ebenen aus, klicken Sie mit der rechten Maustaste auf Ihre Auswahl, und klicken Sie dann auf "Verknüpfungen anzeigen".
Sehen Sie sich im Layer-Explorer die Spalte "Überprüfung unterstützt " an. Wenn der Wert "false" ist, unterstützt das Element die Überprüfung nicht.
Einschließen anderer .NET-Assemblys und -Projekte zur Überprüfung
Wenn Sie Elemente in das Abhängigkeitsdiagramm ziehen, werden Verweise auf die entsprechenden .NET-Assemblys oder -Projekte automatisch dem Ordner "Layerverweise " im Modellierungsprojekt hinzugefügt. Dieser Ordner enthält Verweise auf die Assemblys und Projekte, die während der Überprüfung analysiert werden. Sie können andere .NET-Assemblys und Projekte zur Überprüfung einschließen, ohne sie manuell in das Abhängigkeitsdiagramm zu ziehen.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Modellprojekt oder den Ordner "Layerverweise ", und klicken Sie dann auf " Verweis hinzufügen".
Wählen Sie im Dialogfeld "Verweis hinzufügen " die Assemblys oder Projekte aus, und klicken Sie dann auf "OK".
Manuelles Überprüfen von Code
Wenn Sie über ein offenes Abhängigkeitsdiagramm verfügen, das mit Lösungselementen verknüpft ist, können Sie den Befehl " Verknüpfung überprüfen" aus dem Diagramm ausführen. Sie können auch die Eingabeaufforderung verwenden, um den Msbuild-Befehl auszuführen, wobei die benutzerdefinierte Eigenschaft "/p:ValidateArchitecture " auf "True" festgelegt ist. Wenn Sie beispielsweise Änderungen am Code vornehmen, führen Sie die Layerüberprüfung regelmäßig durch, damit Sie Abhängigkeitskonflikte frühzeitig abfangen können.
Überprüfen von Code aus einem geöffneten Abhängigkeitsdiagramm
Klicken Sie mit der rechten Maustaste auf die Diagrammoberfläche, und klicken Sie dann auf "Architektur überprüfen".
Hinweis
Standardmäßig ist die Build-Aktion-Eigenschaft für die Abhängigkeitsdiagrammdatei (Layerdiagramm) auf Validate festgelegt, sodass das Diagramm im Überprüfungsprozess enthalten ist.
Im Fenster " Fehlerliste " werden alle aufgetretenen Fehler gemeldet. Weitere Informationen zu Überprüfungsfehlern finden Sie unter Problembehandlung bei Layerüberprüfungsproblemen.
Um die Quelle der einzelnen Fehler anzuzeigen, doppelklicken Sie im Fenster " Fehlerliste " auf den Fehler.
Hinweis
Visual Studio zeigt möglicherweise eine Codezuordnung anstelle der Fehlerquelle an. Dies tritt auf, wenn der Code entweder eine Abhängigkeit von einer Assembly aufweist, die nicht durch das Abhängigkeitsdiagramm angegeben wird, oder der Code fehlt eine Abhängigkeit, die durch das Abhängigkeitsdiagramm angegeben wird. Überprüfen Sie die Codemap oder den Code, um zu bestimmen, ob die Abhängigkeit bestehen soll. Weitere Informationen zu Codezuordnungen finden Sie unter Zuordnen von Abhängigkeiten in Ihren Lösungen.
Informationen zum Verwalten von Fehlern finden Sie unter Beheben von Layerüberprüfungsfehlern.
Validieren von Code an der Eingabeaufforderung
Öffnen Sie die Visual Studio-Eingabeaufforderung.
Wählen Sie eine der folgenden Optionen aus:
Um Code für ein bestimmtes Modellierungsprojekt in der Lösung zu überprüfen, führen Sie MSBuild mit der folgenden benutzerdefinierten Eigenschaft aus.
msbuild <FilePath+ModelProjectFileName>.modelproj /p:ValidateArchitecture=true-oder-
Navigieren Sie zu dem Ordner, der die Modellierungsprojektdatei (.modelproj) und das Abhängigkeitsdiagramm enthält, und führen Sie dann MSBuild mit der folgenden benutzerdefinierten Eigenschaft aus:
msbuild /p:ValidateArchitecture=trueUm Code für alle Modellierungsprojekte in der Lösung zu überprüfen, führen Sie MSBuild mit der folgenden benutzerdefinierten Eigenschaft aus:
msbuild <FilePath+SolutionName>.sln /p:ValidateArchitecture=true-oder-
Navigieren Sie zum Lösungsordner, der ein Modellierungsprojekt enthalten muss, das ein Abhängigkeitsdiagramm enthält, und führen Sie dann MSBuild mit der folgenden benutzerdefinierten Eigenschaft aus:
msbuild /p:ValidateArchitecture=trueAlle fehler, die auftreten, werden aufgelistet. Weitere Informationen zu MSBuild finden Sie unter MSBuild und MSBuild Task.
Weitere Informationen zu Überprüfungsfehlern finden Sie unter Problembehandlung bei Layerüberprüfungsproblemen.
Verwalten von Überprüfungsfehlern
Während des Entwicklungsprozesses möchten Sie möglicherweise einige der gemeldeten Konflikte während der Überprüfung unterdrücken. Sie können z. B. Fehler unterdrücken, die Sie bereits adressieren oder für Ihr bestimmtes Szenario nicht relevant sind. Wenn Sie einen Fehler unterdrücken, empfiehlt es sich, eine Arbeitsaufgabe in Team Foundation zu protokollieren.
Warnung
Sie müssen bereits mit TFS Source Code Control (SCC) verbunden sein, um eine Arbeitsaufgabe zu erstellen oder zu verknüpfen. Wenn Sie versuchen, eine Verbindung mit einer anderen TFS SCC zu öffnen, schließt Visual Studio die aktuelle Lösung automatisch. Stellen Sie sicher, dass Sie bereits mit dem entsprechenden SCC verbunden sind, bevor Sie versuchen, eine Arbeitsaufgabe zu erstellen oder zu verknüpfen. In späteren Versionen von Visual Studio sind die Menübefehle nicht verfügbar, wenn Sie nicht mit einem SCC verbunden sind.
Erstellen einer Arbeitsaufgabe für einen Überprüfungsfehler
- Klicken Sie im Fenster " Fehlerliste " mit der rechten Maustaste auf den Fehler, zeigen Sie auf " Arbeitsaufgabe erstellen", und klicken Sie dann auf den Typ der Arbeitsaufgabe, die Sie erstellen möchten.
Verwenden Sie diese Aufgaben, um Überprüfungsfehler im Fenster " Fehlerliste " zu verwalten:
| bis | Führen Sie die folgenden Schritte aus: |
|---|---|
| Ausgewählte Fehler während der Überprüfung unterdrücken | Klicken Sie mit der rechten Maustaste auf einen oder mehrere ausgewählte Fehler, zeigen Sie auf "Überprüfungsfehler verwalten", und klicken Sie dann auf " Fehler unterdrücken". Die unterdrückten Fehler werden mit durchgestrichenem Text angezeigt. Wenn Sie die Überprüfung das nächste Mal ausführen, werden diese Fehler nicht angezeigt. Unterdrückte Fehler werden in einer Suppressions-Datei für die Datei des entsprechenden Abhängigkeitsdiagramms nachverfolgt. |
| Beenden des Unterdrückens ausgewählter Fehler | Klicken Sie mit der rechten Maustaste auf den ausgewählten unterdrückten Fehler oder Fehler, zeigen Sie auf "Überprüfungsfehler verwalten", und klicken Sie dann auf "Fehler unterdrücken beenden". Die ausgewählten unterdrückten Fehler werden angezeigt, wenn Sie die Überprüfung das nächste Mal ausführen. |
| Wiederherstellen aller unterdrückten Fehler im Fenster "Fehlerliste " | Klicken Sie mit der rechten Maustaste auf eine beliebige Stelle im Fenster " Fehlerliste" , zeigen Sie auf "Überprüfungsfehler verwalten", und klicken Sie dann auf " Alle unterdrückten Fehler anzeigen". |
| Ausblenden aller unterdrückten Fehler aus dem Fenster "Fehlerliste " | Klicken Sie mit der rechten Maustaste auf eine beliebige Stelle im Fenster "Fehlerliste" , zeigen Sie auf "Überprüfungsfehler verwalten", und klicken Sie dann auf "Alle unterdrückten Fehler ausblenden". |
Automatisches Überprüfen von Code
Sie können die Layerüberprüfung jedes Mal ausführen, wenn Sie einen lokalen Build ausführen. Wenn Ihr Team Azure DevOps verwendet, können Sie eine Layerüberprüfung mit gated Check-Ins durchführen, die Sie angeben können, indem Sie eine benutzerdefinierte MSBuild-Aufgabe erstellen und Buildberichte verwenden, um Validierungsfehler zu sammeln. Informationen zum Erstellen von Gated Check-In-Builds finden Sie unter TFVC Gated Check-In.
So überprüfen Sie Code während eines lokalen Builds automatisch
Verwenden Sie einen Text-Editor, um die Modellierungsprojektdatei (.modelproj) zu öffnen, und schließen Sie dann die folgende Eigenschaft ein:
<ValidateArchitecture>true</ValidateArchitecture>
– oder –
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Modellierungsprojekt, das das Abhängigkeitsdiagramm oder Diagramm enthält, und klicken Sie dann auf Eigenschaften.
Legen Sie im Eigenschaftenfenster die Validate Architecture-Eigenschaft des Modellierungsprojekts auf "True" fest.
Dazu gehört das Modellierungsprojekt im Validierungsprozess.
Klicken Sie im Projektmappen-Explorer auf die Abhängigkeitsdiagrammdatei (Layerdiagramm), die Sie für die Überprüfung verwenden möchten.
Stellen Sie im Eigenschaftenfenster sicher, dass die Buildaktionseigenschaft des Diagramms auf "Validate" festgelegt ist.
Dazu gehört das Abhängigkeitsdiagramm im Überprüfungsprozess.
Informationen zum Verwalten von Fehlern im Fenster "Fehlerliste" finden Sie unter "Beheben von Layerüberprüfungsfehlern".
Behebung von Problemen mit der Schichtvalidierung
In der folgenden Tabelle werden Layerüberprüfungsprobleme und deren Lösung beschrieben. Diese Probleme unterscheiden sich von Fehlern, die sich aus Konflikten zwischen dem Code und dem Entwurf ergeben. Weitere Informationen zu diesen Fehlern finden Sie unter "Problembehandlung bei Layerüberprüfungsproblemen".
| Problem | Mögliche Ursache | Resolution |
|---|---|---|
| Überprüfungsfehler treten nicht wie erwartet auf. | Die Überprüfung funktioniert nicht für Abhängigkeitsdiagramme, die aus anderen Abhängigkeitsdiagrammen im Projektmappen-Explorer kopiert werden und sich im selben Modellierungsprojekt befinden. Abhängigkeitsdiagramme, die auf diese Weise kopiert werden, enthalten dieselben Verweise wie das ursprüngliche Abhängigkeitsdiagramm. | Fügen Sie dem Modellierungsprojekt ein neues Abhängigkeitsdiagramm hinzu. Kopieren Sie die Elemente aus dem Quellabhängigkeitsdiagramm in das neue Diagramm. |
Beheben von Layerüberprüfungsfehlern
Wenn Sie Code anhand eines Abhängigkeitsdiagramms überprüfen, treten Überprüfungsfehler auf, wenn der Code mit dem Entwurf in Konflikt tritt. Die folgenden Bedingungen können beispielsweise zu Überprüfungsfehlern führen:
Ein Artefakt wird der falschen Ebene zugewiesen. Verschieben Sie in diesem Fall das Artefakt.
Ein Artefakt, z. B. eine Klasse, verwendet eine andere Klasse in einer Weise, die mit Ihrer Architektur in Konflikt ist. Ändern Sie in diesem Fall den Code, um die Abhängigkeit zu entfernen.
Um diese Fehler zu beheben, aktualisieren Sie den Code, bis während der Überprüfung keine weiteren Fehler angezeigt werden. Sie können diese Aufgabe iterativ ausführen.
Der folgende Abschnitt beschreibt die Syntax, die in diesen Fehlern verwendet wird, erläutert die Bedeutung dieser Fehler und schlägt vor, was Sie tun können, um sie zu beheben oder zu verwalten.
| Syntax | Beschreibung |
|---|---|
| ArtifactN(ArtifactTypeN) |
ArtifactN ist ein Artefakt, das einer Ebene im Abhängigkeitsdiagramm zugeordnet ist. ArtifactTypeN ist der Typ von ArtifactN, z. B. eine Klasse oder Methode, z. B.: MySolution.MyProject.MyClass.MyMethod(Method) |
| NamespaceNameN | Der Name eines Namespaces. |
| LayerNameN | Der Name einer Ebene im Abhängigkeitsdiagramm. |
| DependencyType | Der Typ der Abhängigkeitsbeziehung zwischen Artifact1 und Artifact2. Beispielsweise verfügt Artifact1 über eine Calls-Beziehung mit Artifact2. |
| Fehlersyntax | Fehlerbeschreibung |
|---|---|
| DV0001: Ungültige Abhängigkeit | Dieses Problem wird gemeldet, wenn ein Codeelement (Namespace, Typ, Mitglied) einer Schicht zugeordnet ist und auf ein Codeelement verweist, das einer anderen Schicht zugeordnet ist, es jedoch im Abhängigkeitsüberprüfungsdiagramm, das diese Schichten enthält, keinen Abhängigkeitspfeil zwischen diesen Schichten gibt. Dies ist eine Abhängigkeitseinschränkungsverletzung. |
| DV1001: Ungültiger Namespacename | Dieses Problem wird bei einem Codeelement gemeldet, das einer Ebene zugeordnet ist, deren Eigenschaft "Allowed Namespace Names" den Namespace, in dem dieses Codeelement definiert ist, nicht enthält. Dies ist eine Verletzung der Benennungseinschränkung. Beachten Sie, dass die Syntax von "Zulässige Namespacenamen" eine Semikolonliste von Namespaces sein soll, in denen Codeelemente, die einer Ebene zugeordnet sind, definiert werden dürfen. |
| DV1002: Abhängigkeit von nicht referenzierbaren Namespaces | Dieses Problem wird über ein Codeelement gemeldet, das einer Ebene zugeordnet ist und auf ein anderes Codeelement verweist, das in einem Namespace definiert ist, der in der Eigenschaft "Unreferenceable Namespace" der Ebene definiert ist. Dies ist eine Verletzung der Benennungseinschränkung. Beachten Sie, dass die Eigenschaft "Unreferenceable Namespaces" als semikolonstrennte Liste von Namespaces definiert ist, auf die nicht in Codeelementen verwiesen werden soll, die dieser Ebene zugeordnet sind. |
| DV1003: Nicht zulässiger Namespacename | Dieses Problem wird bei einem Codeelement gemeldet, das einer Schicht zugeordnet ist, deren Eigenschaft "Disallowed Namespace Names" den Namespace enthält, in dem dieses Codeelement definiert ist. Dies ist eine Verletzung der Benennungseinschränkung. Beachten Sie, dass die Eigenschaft "Nicht zulässiger Namespacename" als eine durch Semikolons getrennte Liste von Namespaces definiert ist, in denen Codeelemente, die diesem Layer zugeordnet sind, nicht definiert werden sollten. |
| DV2001: Anwesenheit von Layerdiagrammen | Dieses Problem wird in einem Projekt gemeldet, das keine Abhängigkeitsdiagrammdatei enthält, sondern auf die Abhängigkeitsüberprüfungsanalyse verweist. Wenn die Abhängigkeitsüberprüfung nicht verwendet wurde, können Sie "Microsoft.DependencyValidation.Analyzers" direkt aus dem Projektmappen-Explorer entfernen oder diese Warnung unterdrücken. Informationen zum Hinzufügen eines Abhängigkeitsdiagramms finden Sie unter Erstellen von Abhängigkeitsdiagrammen aus Ihrem Code. |
| DV2002: Basis für nicht zugeordnete Typen | Dieses Problem wird gemeldet, wenn ein Codeelement keiner Ebene zugeordnet ist. |
| DV3001: Fehlender Link | Layer 'LayerName' verlinkt zu 'Artifact', das nicht gefunden werden kann. Fehlt ein Assemblyverweis? |
| DV9001: Architekturanalyse hat interne Fehler gefunden | Die Ergebnisse sind möglicherweise nicht abgeschlossen. Weitere Informationen finden Sie im detaillierten Build-Ereignisprotokoll oder Ausgabefenster. |