Ich habe eine Lösung mit 239 Projekten. Ich habe momentan folgendes Problem:
Wenn ich nach der vollständigen Bereinigung (Löschen des Ausgabeverzeichnisses) ein "Alles neu erstellen" in der Lösung mache:
%Vor%Ich verstehe Folgendes:
Was ich nicht verstehe
Eine einzige Notiz: Ich weiß nicht, ob dies auf eine kürzliche Änderung (eines Projekts / Visual Studios / ...) zurückzuführen ist, weil ich 2 Jahre lang an dieser Lösung arbeite und es das erste Mal ist Ich bin diesem Thema immer wieder begegnet.
Also die Frage:
BEARBEITEN Nach dem Kommentar finden Sie hier einige Zusatzinfos:
In BBB.csproj
habe ich die folgende Referenz:
BEARBEITEN 2
Ich weiß nicht, ob das direkt damit zusammenhängt, aber beim Überprüfen der Projektabhängigkeiten stellte ich fest, dass BBB
abhängig von CCC
ist (aber für AAA
ist nichts angegeben. Ich frage mich, ob es eine Abhängigkeit gibt , im Grunde ignoriert es alle Informationen aus den Referenzen? Wenn ich versuche, die CCC
Abhängigkeit zu entfernen, bekam ich eine Nachricht:
This dependency was added by the project system and cannot be removed
EDIT 3
Ich habe eine interessante Entdeckung gemacht: Der Fehler, den ich in EDIT 2 habe, liegt darin, dass diese Abhängigkeit beim Erstellen der Referenz zwischen den beiden Projekten hinzugefügt wurde.
Aus einem unbekannten Grund scheint diese Abhängigkeit für eine Referenz hier nicht erstellt worden zu sein. Wenn ich die Projektreferenz lösche, dann füge ich die Referenz wieder demselben Projekt hinzu, jetzt habe ich diese Abhängigkeit (die ich nicht löschen kann). Ich kann nicht finden, wo diese "Abhängigkeit gespeichert ist. Irgendeine Idee, wie man diese Lösung weit "repariert"?
Nach einigen Nachforschungen fand ich das Problem:
Tatsächlich sollte Visual Studio automatisch diese Abhängigkeiten zwischen den Projekten hinzufügen, wenn man eine in ein Projekt verweist. Ich kann das sehr einfach sehen, indem ich einfach einen Projektverweis hinzufüge. Außerdem scheinen diese "Abhängigkeiten" nicht entfernt zu werden (siehe meine Bearbeitung 2).
Die Frage, die ich gestellt habe, ist also, wie kann ich einige Projekte referenzieren und keine Abhängigkeit für einige Projekte?
Ich habe überprüft, dass meine Referenzen (zumindest in einigen Fällen sah ich, dass es nicht funktionierte) und sie waren Projektreferenz und nicht DLL.
Einige meiner Kollegen mit dem exakt gleichen Code (Holen Sie die neueste Version des Codes ohne Änderungen) hatten dieses Problem nicht und die Abhängigkeit wurde in Visual Studio angezeigt.
Also habe ich die Datei *.sdf
in der Nähe meiner Lösungsdatei entfernt (nachdem ich Visual Studio geschlossen habe). Ich habe wieder geöffnet und Tadaa, alle Abhängigkeiten wurden von Visual Studio neu berechnet. Jetzt baue ich alles neu, alles ist direkt ein Erfolg.
Ich bin nicht sicher, warum es passiert, ich hatte etwas Zeit, um Visual Studio zu töten, vielleicht war etwas dann beschädigt.
Von deinem Post hast du das gesagt
"I've no explicit "Project Dependency" specify(Right click on solution -> Project Dependencies)"
Dies bedeutet, dass alle Ihre Referenzen auf die kompilierten DLLs und nicht auf die Projekte verweisen.
Ich habe diesen Ansatz oft von Teams mit großen Lösungen gesehen (Sie haben 239 Projekte), aufgrund der Langsamkeit von VS, um so viele Projektreferenzen zu laden.
Die Problemumgehungen, die ich gesehen habe, sind:
Eine einzige Lösung mit 239 Projekten scheint dem Grundsatz zu widersprechen, Ihre Entwicklung in kleinere Module aufzuteilen, aber das ist nicht immer Ihre Entscheidung ...
Ich habe dieses Problem in einer kleineren, aber stark voneinander abhängigen Lösung gesehen. Wir haben dieses Problem gelöst, indem wir die maximale Anzahl paralleler Projekt-Builds verringert haben, bis sie vorhersehbar erfolgreich sind. Werkzeuge - & gt; Optionen - & gt; Projekte und Lösungen - & gt; Erstellen und Ausführen.
Ich weiß, dass dies keine Lösung ist, aber Sie könnten Ihre Kompilierungsabhängigkeiten in Laufzeitabhängigkeiten umwandeln, wenn Sie Dependency-Injection-Technologien wie MEF oder Unity verwenden.
In diesem Fall haben Ihre Projekte begrenzte Abhängigkeiten (Schnittstellen, Container).
Aber ich muss sagen, dass diese Technologien einige Nebenwirkungen haben - wie "pseudozufällige" Initialisierung und so weiter ...
Tags und Links .net c# visual-studio-2013