VS erkennt keine Projektabhängigkeiten

8

Die Lösung, an der ich arbeite, enthält mehr als 400 Projekte. Das Problem ist nicht reproduzierbar, aber sehr ärgerlich. (Windows 8.1, Visual Studio 2015 Update 2 und 3)

Grundsätzlich werden einige Projektabhängigkeiten bei der Berechnung der Build-Reihenfolge nicht berücksichtigt. Der Prozess wird mit einem Fehler beendet: Die angegebene DLL kann nicht gefunden werden. Es tritt hin und wieder auf, normalerweise mit einem anderen Projekt, das "fehlt". Viele Male ist nichts falsch und es funktioniert einfach. Konnte kein Muster finden.

Wenn ich das "fehlende" Projekt von Hand erstelle und dann die Lösung erstelle, ist alles in Ordnung, oder ein anderes Projekt wird "vermisst".

Es scheint, als hätte VS die Abhängigkeiten von Projekten verloren, obwohl alle Referenzen vorhanden sind, wie in VS und in den csproj-Dateien.

Siehe Screenshot: Der Lösungs-Build wurde gestoppt, weil eine DLL fehlt. Das Projekt, das die DLL erstellt, wird korrekt referenziert (siehe Lösungsexplorer), ist aber im Dialogfeld Projektabhängigkeiten nicht sichtbar. Meine Vermutung ist, dass wegen der fehlenden Abhängigkeit die Build-Reihenfolge verwechselt wird und - basierend auf einer Zufälligkeit aufgrund der parallelen Kompilierung - das abhängige Projekt in einigen Fällen zu spät erstellt wird.

Hinweis: Ja, ich könnte nur das Kontrollkästchen aktivieren, aber wie gesagt, dieses Problem tritt zufällig und mit zufälligen Projekten auf. Und ja, ich kann das Problem umgehen, indem ich vorher die betroffenen Projekte manuell erstelle. Ich suche nach einer Lösung für das Grundproblem.

Alle Hinweise und Kommentare sind willkommen.

    
Dercsár 16.11.2016, 11:56
quelle

1 Antwort

1

Manchmal ist mir aufgefallen, dass die Verwendung eines Import-Helpers (z. B. ReSharper) dazu führen kann, dass ein abhängiges Projekt mit der Ausgabe eines anderen abhängigen Projekts anstatt mit der Abhängigkeitsquelle verknüpft wird.

Das heißt, wenn Sie ein Projekt erstellen wollten - nennen wir es 'ProjectA' - und verknüpfen Sie es mit der Bibliothek 'MyLib', dann erstellen Sie 'ProjectB' und erlauben ReSharper automatisch Abhängigkeiten auf 'MyLib' zu lösen Möglicherweise stellen Sie fest, dass ReSharper tatsächlich mit der Datei \ ProjectA \ Bin \ MyLib.dll und nicht mit der Datei. \ Libraries \ MyLib \ MyLib.dll verknüpft wird.

Wenn Sie Ihre Lösung neu erstellen, kann Folgendes passieren: * ProjectB erstellt zuerst / schneller (weil ProjectA möglicherweise viele Änderungen enthält, ProjectB aber nur wenige Codeänderungen). * ProjectB versucht dann, eine Verknüpfung mit der MyLib.dll herzustellen, die sich in dem \ bin-Ordner von ProjectA befindet und es nicht finden kann. * ProjectA schließt das Erstellen ab und kopiert seine Abhängigkeit - MyLib.dll in den Ordner \ bin. * ProjectB wird von Ihnen nicht manuell neu erstellt und hat nun keine Probleme, \ ProjectA \ bin \ MyLib.dll zu finden.

Überprüfen Sie zusammenfassend den genauen Quellenort der Abhängigkeiten in Ihrem Projekt. Ich würde eine Vermutung riskieren, dass mit mehr als 400 Projekten einige Includes vernetzt wurden.
Viel Glück!

    
Monza 25.11.2016 00:36
quelle

Tags und Links