2009-11-03 4 views

Antwort

7

NDepend ein ausgezeichnetes Werkzeug, das diese und noch viel mehr tun. Vielleicht ist es Overkill für das, was Sie wollen, aber es gibt eine Testversion, also schauen Sie ...

+0

Ja das hat viele Funktionen aber ich mag es .. danke –

0

Sie können den Abhängigkeitsbaum über System.Reflection nach unten jagen. Beim Erstellen des Baums würden Sie beim Hinzufügen eines Knotens überprüfen, ob alle übergeordneten Elemente des Knotens dem Projekt oder der Baugruppe entsprechen, die Sie hinzufügen. Wenn dies der Fall ist, werfen Sie eine Ausnahme an den Benutzer aus.

Werfen technische Ausnahmen wie diese sind in Ordnung, wenn die Benutzer die Menschen sein, die wissen, wie Montage Referenzen und Ausnahmen arbeiten - Leute wie Entwickler :)

0

Wenn Sie Projekt Referenzen zwischen den Projekten in Ihrer Lösung verwenden, wird die korrekte Build-Reihenfolge automatisch von Visual Studio (oder MSBuild). Dies bricht natürlich, wenn Sie Assemblyreferenzen verwenden. Auch Visual Studio wird Sie daran hindern, zirkuläre Projekt Referenzen hinzuzufügen.

+1

>> Auch Visual Studio wird Sie daran hindern, zirkuläre Projektreferenzen hinzuzufügen. Dies ist eine nette Funktion. Wenn Sie den Zirkelverweis mehr als eine 2-Punkt-Referenz haben (z. B. A -> B -> C -> A), wäre es nett, wenn VS Ihnen mehr Informationen darüber geben würde, welche Referenzen den potenziellen Zirkelbezug verursachen würden. –

1

Ich weiß, dies ist eine späte Antwort, aber ich fand mit GraemeF und tsilb Antworten beide zeigten keine Abhängigkeit zwischen den beiden Baugruppen. Es sieht aus wie wenn Sie die Reihenfolge der Abhängigkeiten umkehren (Assembly A Referenzen B, aber Sie schalten Sie ihn auf B Referenzierung A), lässt es die Abhängigkeit in der Build-Reihenfolge. Um dies zu lösen, öffnen Sie den Dialog Eigenschaften für Ihre Lösung, gehen Sie zu Allgemeine Eigenschaften und dann auf Projektabhängigkeiten. Suchen Sie die Baugruppe A und entfernen Sie die Abhängigkeit Baugruppe B. Dadurch können Sie die Referenz normal hinzufügen.