2017-03-15 1 views
0

Ich bin auf eine seltsame Situation bei der Arbeit gestoßen, wo ich die gleiche Bibliothek über mehrere Projekte hinweg nutze, aber nicht auf die übliche Weise.Wie konfiguriert man Abhängigkeiten in Visual Studio - .NET

Nehmen wir an, wir haben ein Hauptprojekt namens "MainProject".
Wir haben auch eine gemeinsam genutzte Bibliothek namens "A" und eine andere Bibliothek namens "B".
Sagen Sie "B" ist eine breite Utility-Bibliothek, die viel Zeug enthält, und wird sowohl von der Bibliothek "A" und von "MainProject" verwendet.

Alle diese Projekte/Bibliotheken haben Git als VCS und sind konfiguriert, um mit Submodule als solche:

Hauptprojekts:

  • Sub-Modul der Bibliothek B
  • Bibliothek A
    • Teilmodul der Bibliothek B

Jetzt tritt das Problem auf, wenn versucht wird, die Lösung des "MainProject" neu zu erstellen.
Visual Studio gibt den Fehler:

Error 1 Metadata file 'LibraryA_Path\LibraryB.dll' not found

für dieses Problem Suchen, wurde mir klar, dass etwas, wie ich es erwarten lassen nicht gebaut.
Und das ist richtig - "A" baut nicht das "B" auf das es sich bezieht, wahrscheinlich weil es zu tief verschachtelt ist.

Dann habe ich versucht, den Verweis von "A" explizit auf das "B" des "MainProject" zu setzen, was das Build-Problem löste, aber eine Änderung im Git-Arbeitsbaum erzwang, was jedes Update für diese Bibliothek bedeutet wird mich zwingen, diesen Prozess der manuellen Referenzierung noch einmal zu tun.

Also, was ist die richtige Art dieses Projekt zu konfigurieren? Ich kann alles versuchen, da ich alle Projekte und Bibliotheken unter Kontrolle habe - in Code und auch in Git.

Antwort

0

Ich bin mir nicht sicher, ob ich Sie richtig verstanden habe, aber verweisen Sie auf die * .dlls, die vom Bibliothek B-Projekt erstellt werden? Wenn dies der Fall ist, ersetzen Sie es durch eine Projektreferenz im Bibliothek B-Projekt. Visual Studio stellt dann sicher, dass die referenzierten Projekte zuerst erstellt werden.

+0

Leider nein, ich * ** ** referenziere die Projekte selbst. –

+0

Also beziehen sich die Projekte auf sie? MainProject -> Bibliothek B und MainProject -> Bibliothek A -> Bibliothek B? Hat Bibliothek B Verweise auf Bibliothek A? Gibt es andere Ringreferenzen, an die Sie denken könnten, um zu verhindern, dass Visual Studio die richtige Build-Reihenfolge ermittelt? – DeveloperExceptionError

+0

Ja, du hast es richtig - Das ist genau meine Projektbestellung. Allerdings gibt es keine Ring- oder Zirkelverweise, und wenn man sich die Erstellungsreihenfolge des Projekts anschaut, sieht es tatsächlich gut aus. –

Verwandte Themen