Überprüfen von Code mit Ebenendiagrammen
Um sicherzustellen dass Code nicht mit dem Entwurf verursacht, können Sie Code mit Ebenendiagrammen in Visual Studio Ultimate und Visual Studio Premium überprüfen.Dies kann Ihnen helfen:
Suchen Sie Konflikte zwischen Abhängigkeiten im Code und Abhängigkeiten in einem Ebenendiagramm.
Ermitteln von Abhängigkeiten, die möglicherweise von vorgeschlagenen Änderungen betroffen sind
Sie können z. B. das Ebenendiagramm bearbeiten, um potenzielle Architekturänderungen darzustellen, und dann den Code überprüfen, um die betroffenen Abhängigkeiten zu ermitteln.
Umgestalten oder Migrieren von Code in einen anderen Entwurf
Suchen von Code oder Abhängigkeiten, die Arbeit erfordern, wenn Sie den Code auf eine andere Architektur verschieben.
Sie können Code in einem geöffneten Ebenendiagramm in Visual Studio oder von einer Eingabeaufforderung manuell überprüfen.Sie können auch Code automatisch überprüft beim Ausführen von Builds oder Team Foundation Build der lokalen Variablen.Siehe Channel 9-Video: Entwerfen Sie die Architektur mit Ebenendiagrammen.
Anforderungen
Visual Studio Ultimate oder Visual Studio Premium
Eine Projektmappe, die ein Modellierungsprojekt mit einem Ebenendiagramm enthalten.Dieses Ebenendiagramm muss mit Artefakten in Visual C# .NET verknüpft sind, oder Visual Basic .NET. projiziert, dass Sie überprüfen möchten.Siehe Erstellen von Ebenendiagrammen aus Code.
To
Siehe, wenn ein Element Validierung unterstützt
Schließen Sie andere .NET-Assemblys und Projekte zur Validierung ein
Überprüfen Sie Code manuell
Überprüfen Sie Code automatisch
Beheben Sie Ebenenvalidierungsprobleme
Verstehen und lösen Sie Ebenenvalidierungsfehler auf
Siehe, wenn ein Element Validierung unterstützt
Klicken Sie im Ebenendiagramm wählen Sie eine oder mehrere Ebenen aus, klicken Sie auf die Auswahl, und klicken Sie dann auf Verknüpfungen anzeigen.
Überprüfen Sie im Ebenen-Explorer die Spalte Unterstützt die Validierung.Wenn der Wert false ist, unterstützt das Element nicht Validierung.
Sie können Websites, Office-Dokumente und Nur-Text-Dateien mit Ebenen verknüpfen, aber der Validierung umfasst sie nicht.Validierungsfehler werden nicht als Verweise auf Projekte oder Assemblys, die verknüpft werden, um Ebenen zu trennen, wenn keine Abhängigkeiten zwischen diesen Ebenen angezeigt werden.Solche Verweise werden nur dann als Abhängigkeiten betrachtet, wenn sie im Code verwendet werden.
Schließen Sie andere .NET-Assemblys und Projekte zur Validierung ein
Wenn Sie Elemente in das Ebenendiagramm ziehen, werden Verweise auf die entsprechenden .NET-Assemblys oder -Projekten automatisch dem Ordner Ebenenverweise im Modellierungsprojekt hinzugefügt.Dieser Ordner enthält Verweise auf die Assemblys und Projekte, die während der Validierung analysiert werden.Sie können andere .NET-Assemblys und Projekte zur Validierung einschließen, ohne sie manuell in das Ebenendiagramm ziehen.
In Projektmappen-Explorer klicken Sie das Modellierungsprojekt oder den Ordner Ebenenverweise, und klicken Sie dann auf Verweis hinzufügen.
Wählen Sie im Dialogfeld Verweis hinzufügen die Assemblys oder Projekte aus, und klicken Sie anschließend auf OK.
Überprüfen Sie Code manuell
Wenn Sie ein geöffneten Ebenendiagramm verfügen, das den Projektmappenelementen verknüpft ist, können Sie den Überprüfen Kurzbefehl aus dem Diagramm ausführen.Sie können auch die Eingabeaufforderung verwenden, um den msbuild Befehl mit dem benutzerdefinierten Eigenschaft /p:ValidateArchitecture zu True auszuführen.Beispielsweise wie Änderungen im Code vornehmen, führen Sie regelmäßig eine Ebenenvalidierung aus, damit Sie Abhängigkeitskonflikte frühzeitig abfangen können.
So überprüfen Sie Code in einem geöffneten Ebenendiagramm
Klicken Sie mit der rechten Maustaste auf die Diagrammoberfläche, und klicken Sie dann auf Architektur überprüfen.
Hinweis Die Eigenschaft Buildvorgang in der Ebenendiagrammdatei (.layerdiagram) ist standardmäßig auf Überprüfen festgelegt, sodass das Diagramm in den Validierungsvorgang eingeschlossen wird.
Im Fenster Fehlerliste werden ggf. auftretende Fehler angezeigt.Weitere Informationen zu Validierungsfehlern, finden Sie unter Verstehen und lösen Sie Ebenenvalidierungsfehler auf.
Um die Quelle der einzelnen Fehler anzuzeigen, doppelklicken Sie im Fenster Fehlerliste auf den Fehler.
Hinweis Visual Studio zeigt möglicherweise anstelle der Quelle des Fehlers ein Abhängigkeitsdiagramm an.Dies ist der Fall, wenn der Code eine Abhängigkeit von einer Assembly enthält, die nicht im Ebenendiagramm angegeben ist, oder wenn im Code eine im Ebenendiagramm angegebene Abhängigkeit fehlt.Überprüfen Sie das Abhängigkeitsdiagramm oder den Code, um festzustellen, ob die Abhängigkeit vorhanden sein sollte.Weitere Informationen zu Abhängigkeitsdiagrammen finden Sie unter Visualisieren von Codeabhängigkeiten in Abhängigkeitsdiagrammen.
Um Fehler zu verwalten, finden Sie unter Validierungsfehler unterdrücken.
So fügen Sie Code an der Eingabeaufforderung überprüfen
Öffnen Sie die Visual Studio-Eingabeaufforderung.
Wählen Sie eine der folgenden Optionen aus:
Wenn Sie Code anhand eines bestimmten Modellierungsprojekts in der Projektmappe überprüfen möchten, führen Sie MSBuild mit der folgenden benutzerdefinierten Eigenschaft aus.
msbuild <FilePath+ModelProjectFileName>.modelproj /p:ValidateArchitecture=true
- oder -
Navigieren Sie zum Ordner mit der Modellierungsprojektdatei (.modelproj) und dem Ebenendiagramm, und führen Sie MSBuild dann mit der folgenden benutzerdefinierten Eigenschaft aus:
msbuild /p:ValidateArchitecture=true
Wenn Sie Code anhand aller Modellierungsprojekte in der Projektmappe überprüfen möchten, führen Sie MSBuild mit der folgenden benutzerdefinierten Eigenschaft aus:
msbuild <FilePath+SolutionName>.sln /p:ValidateArchitecture=true
- oder -
Navigieren Sie zu einem Projektmappenordner, der ein Modellierungsprojekt mit einem Ebenendiagramm enthält, und führen Sie MSBuild dann mit der folgenden benutzerdefinierten Eigenschaft aus:
msbuild /p:ValidateArchitecture=true
Alle aufgetretenen Fehler werden aufgelistet.Weitere Informationen zu MSBuild finden Sie unter MSBuild und MSBuild-Aufgabe.
Weitere Informationen zu Validierungsfehlern, finden Sie unter Verstehen und lösen Sie Ebenenvalidierungsfehler auf.
Validierungsfehler unterdrücken
Während des Entwicklungsprozesses können Sie ggf. einige der Konflikte unterdrücken, die während der Validierung gemeldet werden.Beispielsweise können Sie Fehler unterdrücken, die Sie bereits behandeln oder die für das spezifische Szenario nicht relevant sind.Wenn Sie einen Fehler unterdrücken, empfiehlt es sich, in Team Foundation eine Arbeitsaufgabe zu protokollieren.
So erstellen Sie eine Arbeitsaufgabe für einen Validierungsfehler
- Klicken Sie im Fenster Fehlerliste mit der rechten Maustaste auf den Fehler, zeigen Sie auf Arbeitsaufgabe erstellen, und klicken Sie anschließend auf den zu erstellenden Arbeitsaufgabentyp.
Mithilfe dieser Aufgaben können Sie Validierungsfehler im Fenster Fehlerliste unterdrücken:
To |
Schritte |
---|---|
Unterdrücken von ausgewählten Fehlern während der Validierung |
Klicken Sie mit der rechten Maustaste auf den oder die ausgewählten Fehler, zeigen Sie auf Validierungsfehler unterdrücken, und klicken Sie anschließend auf Fehler unterdrücken. Die unterdrückten Fehler werden durchgestrichen dargestellt.Beim nächsten Ausführen der Validierung werden diese Fehler nicht mehr angezeigt. Unterdrückte Fehler werden in einer SUPPRESSIONS-Datei für die entsprechende Ebenendiagrammdatei nachverfolgt. |
Beenden der Unterdrückung von ausgewählten Fehlern |
Klicken Sie mit der rechten Maustaste auf den oder die unterdrückten Fehler, zeigen Sie auf Validierungsfehler unterdrücken, und klicken Sie dann auf Fehler nicht mehr unterdrücken. Beim nächsten Ausführen der Validierung werden die ausgewählten unterdrückten Fehler wieder angezeigt. |
Wiederherstellen aller unterdrückten Fehler im Fenster Fehlerliste |
Klicken Sie mit der rechten Maustaste auf eine beliebige Stelle im Fenster Fehlerliste, zeigen Sie auf Validierungsfehler unterdrücken, und klicken Sie dann auf Unterdrückte Fehler anzeigen. |
Ausblenden aller unterdrückten Fehler im Fenster Fehlerliste |
Klicken Sie mit der rechten Maustaste auf eine beliebige Stelle im Fenster Fehlerliste, zeigen Sie auf Validierungsfehler unterdrücken, und klicken Sie dann auf Unterdrückte Fehler ausblenden. |
Überprüfen Sie Code automatisch
Sie können Ebenenvalidierung jedes Mal ausführen, der Sie einen lokalen Build ausführen.Wenn das Team Team Foundation Build verwendet, können Sie die Ebenenvalidierung mit abgegrenzten Eincheckvorgängen ausführen, die Sie angeben können, indem Sie eine benutzerdefinierte MSBuild-Aufgabe erstellen, und von Buildberichten, um Validierungsfehler zu sammeln. Um abgegrenzter Eincheckbuilds zu erstellen, finden Sie unter Definieren eines abgegrenzten Eincheckbuildprozesses zur Überprüfung der Änderungen.
So fügen Sie Code während eines lokalen Builds automatisch überprüfen
- Öffnen Sie die Modellierungsprojektdatei (.modelproj) mithilfe eines Text-Editors, und fügen Sie dann die folgende Eigenschaft ein:
<ValidateArchitecture>true</ValidateArchitecture>
- oder -
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Modellierungsprojekt, das die Ebenendiagramme enthält, und klicken Sie dann auf Eigenschaften.
Legen Sie im Fenster Eigenschaften die Eigenschaft Architektur überprüfen des Modellierungsprojekts auf True fest.
Dadurch wird das Modellierungsprojekt in den Validierungsprozess eingeschlossen.
Klicken Sie im Projektmappen-Explorer auf die Ebenendiagrammdatei (.layerdiagram), die Sie zur Validierung verwenden möchten.
Vergewissern Sie sich im Fenster Eigenschaften, dass die Eigenschaft Buildvorgang des Diagramms auf Überprüfen festgelegt ist.
Dadurch wird das Ebenendiagramm in den Validierungsprozess eingeschlossen.
Um Fehler im Fenster Fehlerliste zu verwalten, finden Sie unter Validierungsfehler unterdrücken.
So fügen Sie Code für Team Foundation Build automatisch überprüfen
Doppelklicken Sie in Team Explorer auf die Builddefinition, und klicken Sie dann auf Prozess.
Erweitern Sie unter Buildprozessparameter das Element Kompilierung, und geben Sie Folgendes im Parameter MSBuild-Argumente ein:
/p:ValidateArchitecture=true
Weitere Informationen zu Validierungsfehlern, finden Sie unter Verstehen und lösen Sie Ebenenvalidierungsfehler auf.Weitere Informationen über Team Foundation Build finden Sie hier:
Definieren eines auf der Standardvorlage basierenden Buildprozesses
Erstellen und Verwenden einer benutzerdefinierten Buildprozessvorlage
Beheben Sie Ebenenvalidierungsprobleme
In der folgenden Tabelle sind Ebenenvalidierungsprobleme und entsprechende Lösungen aufgeführt.Diese Probleme unterscheiden sich von Fehlern, die das Ergebnis von Konflikten zwischen Code und Entwurf sind.Weitere Informationen zu diesen Fehlern, finden Sie unter Verstehen und lösen Sie Ebenenvalidierungsfehler auf.
Problem |
Mögliche Ursache |
Lösung |
---|---|---|
Validierungsfehler treten nicht wie erwartet auf. |
Die Validierung funktioniert nicht mit Ebenendiagrammen, die aus anderen Ebenendiagrammen im Projektmappen-Explorer kopiert wurden und sich im gleichen Modellierungsprojekt befinden.Ebenendiagramme, die auf diese Weise kopiert werden, enthalten die gleichen Verweise wie das ursprüngliche Ebenendiagramm. |
|
Verstehen und Ebenen-Validierungs-Fehler wie
Wenn Sie Code anhand eines Ebenendiagramms überprüfen, treten Validierungsfehler auf, wenn der Code mit dem Entwurf entspricht.Beispielsweise können bewirken die folgenden Bedingungen Validierungsfehler auftreten:
Ein Artefakt wurde der falschen Ebene zugewiesen.Verschieben Sie in diesem Fall das Artefakt.
Von einem Artefakt (beispielsweise einer Klasse) wird eine andere Klasse auf eine Weise verwendet, die einen Konflikt mit der Architektur zur Folge hat.Gestalten Sie in diesem Fall den Code um, um die Abhängigkeit zu entfernen.
Aktualisieren Sie zum Beheben dieser Fehler den Code, bis bei der Validierung keine Fehler mehr angezeigt werden.Diese Aufgabe kann iterativ ausgeführt werden.
Im folgenden Abschnitt werden die Syntax, die in diesen Fehlern verwendet wird, werden die Bedeutung dieser Fehler und vorschlägt, was Sie tun können, um diese zu beheben oder zu verwalten.
Syntax |
Beschreibung |
---|---|
ArtefaktN(ArtefakttypN) |
ArtefaktN ist ein Artefakt, das einer Ebene im Ebenendiagramm zugeordnet ist. ArtefakttypN ist der Typ von ArtefaktN (beispielsweise eine Klasse oder eine Methode). Beispiel: MySolution.MyProject.MyClass.MyMethod(Method) |
NamespacenameN |
Der Name eines Namespace. |
EbenennameN |
Der Name einer Ebene im Ebenendiagramm. |
Abhängigkeitstyp |
Der Typ der Abhängigkeitsbeziehung zwischen Artefakt 1 und Artefakt 2.Beispiel: Artefakt 1 besitzt eine Beziehung vom Typ Aufrufe zu Artefakt 2. |
Fehlersyntax |
Fehlerbeschreibung |
---|---|
AV0001: Ungültige Abhängigkeit: Artefakt 1(Artefakttyp 1) --> Artefakt 2(Artefakttyp 2) Ebenen: Ebenenname 1, Ebenenname 2 | Abhängigkeiten: Abhängigkeitstyp |
Artefakt 1 in Ebenenname 1 darf keine Abhängigkeit von Artefakt 2 in Ebenenname 2 aufweisen, da Ebenenname 1 keine direkte Abhängigkeit von Ebenenname 2 aufweist. |
AV1001: Ungültiger Namespace: Artefakt Ebene: Ebenenname | Erforderlicher Namespace: Namespacename 1 | Aktueller Namespace: Namespacename 2 |
Die zugeordneten Artefakte von Ebenenname müssen zu Namespacename 1 gehören.Artefakt befindet sich in Namespacename 2, nicht in Namespacename 1. |
AV1002: Verwendung von unzulässigem Namespace: Artefakt 1(Artefakttyp 1) | Artefakt 2(Artefakttyp 2) Ebene: Ebenenname | Unzulässiger Namespace: Namespacename | Abhängigkeiten: Abhängigkeitstyp |
Die zugeordneten Artefakte von Ebenenname dürfen nicht von Namespacename abhängen.Artefakt 1 darf nicht von Artefakt 2 abhängen, da sich Artefakt 2 in Namespacename befindet. |
AV1003: In unzulässigem Namespace: Artefakt(Artefakttyp) Ebene: Ebenenname | Unzulässiger Namespace: Namespacename |
Die zugeordneten Artefakte von Ebenenname dürfen nicht zu Namespacename gehören.Artefakt gehört zu Namespacename. |
AV3001: Fehlender Link: Ebene "Ebenenname" ist mit "Artefakt" verknüpft, "Artefakt" wurde jedoch nicht gefunden.Möglicherweise fehlt ein Assemblyverweis. |
Für Ebenenname besteht eine Verknüpfung mit einem Artefakt, das nicht gefunden wurde.Ein Link zu einer Klasse kann beispielsweise fehlen, wenn im Modellierungsprojekt ein Verweis auf die Assembly mit der Klasse fehlt. |
AV9001: Bei der Architekturvalidierung sind interne Fehler aufgetreten.Die Ergebnisse sind möglicherweise nicht vollständig.Weitere Informationen finden Sie im ausführlichen Buildereignisprotokoll oder im Ausgabefenster. |
Siehe das Buildereignisprotokoll für weitere Details. |