Wie der Titel schon sagt, habe ich gerade eine VS2010-Lösung mit ~ 50 Projekten. Wenn ich ein "Top-Level" -Projekt ändere, auf das nichts verweist, erstellt VS immer noch alle 50 Projekte neu. Ich verwende Visual Studio 2010 Ultimate ohne Add-Ons. Ich verwende ILMerge, um alle Projekte in einer einzigen Datei zu konsolidieren.
Ich habe dies überprüft, indem ich die Zeitstempel der DLLs der unteren Ebene überprüft habe und festgestellt habe, dass sie tatsächlich neu erstellt wurden, obwohl ihr Code nicht berührt wurde.
Ich habe alle Antworten und Kommentare gelesen für:
Visual Studio 2008 wird ständig neu erstellt
Visual Studio baut alles weiter
In meiner Lösung tritt ein seltsamer VS2010-Build-Fehler auf
Gründe für die Neuerstellung von C # -Projekten in Visual Studio
Die meisten von ihnen bieten jedoch nur Vorschläge zum Entladen von Projekten an, um die Bauzeiten zu verkürzen, aber nichts Konkretes für eine Lösung. Ich versuche herauszufinden, warum VS der Meinung ist, dass diese abhängigen Projekte neu erstellt werden müssen, wenn dies nicht der Fall ist, und behebe sie.
Ich habe "Extras> Optionen> Projekte und Lösungen> Erstellen und Ausführen> Nur Startprojekte und Abhängigkeiten beim Ausführen erstellen" aktiviert, aber ohne Auswirkung.
Wenn ich nur ein "Mid-Level" -Projekt neu erstelle, das nur 8 (in) direkte Abhängigkeiten aufweist, werden weiterhin alle 8 Projekte erstellt, obwohl ILMerge nicht aufgerufen wird und keines der abhängigen Projekte geändert wurde.
Vielen Dank an alle für jeden Einblick, den Sie möglicherweise gewähren können.
Hinzugefügt
Um einige der Vorschläge zu testen, habe ich ein neues WinForms-Projekt von Grund auf neu erstellt. Ich habe dann zwei neue Projekte in dieser Lösung erstellt. Ich habe den gesamten Code und die Ressourcen (keine Projektdatei) aus meinen beiden Projekten auf der untersten Ebene in die beiden brandneuen Projekte kopiert (dazu habe ich die Dateien und Ordner aus dem Explorer in Visual Studio auf das Projekt abgelegt).
Das niedrigste Projekt, nennen wir es B , hat kein anderes Projekt referenziert. Das nächste Projekt, A , verwiesen B nur. Sobald ich die erforderlichen .NET- und externen Assemblyreferenzen zu den Projekten hinzugefügt habe, wird die Lösung erstellt.
Ich hatte dann meine neue WinForm-Projektreferenz A und habe einen vollständigen Build durchgeführt. Die Ref-Kette lautet also:
WinForm -> A -> B.
Ich habe dann nur WinForm geändert und einen Standard-Build (F6) durchgeführt. Nach wie vor hat Visual Studio alle drei Projekte neu erstellt.
Nach einer systematischen Eliminierung der Quelldateien in Projekt B stellte ich fest, dass eine Änderung von WinForm nicht mehr die gesamte Lösung neu erstellen und nur neu erstellen würde , wenn ich meine Resources.Designer.cs
und Resources.resx
(und den Code auskommentierte, der das .Properties.Resources
Objekt dieser Ressourcen verwendete) WinForm .
Das Hinzufügen von Resources.resx
und Resources.Designer.cs
zurück zu Projekt B (aber das Auskommentieren des Codes, auf den verwiesen wird, damit die Ressourcen nicht genutzt werden) würde das vollständige Build-Verhalten wieder einführen.
Um festzustellen, ob meine Ressourcendateien möglicherweise beschädigt waren, habe ich sie erneut gelöscht und dann eine neue erstellt (über Projekteigenschaften -> Ressourcen) und dieselbe Ressource wie zuvor erneut hinzugefügt, bei der es sich um eine einzelne Excel-Datei handelte. Mit diesem Setup würde die vollständige Neuerstellung weiterhin stattfinden.
Ich habe dann die einzelne Ressource entfernt, aber die Ressourcendatei in Projekt B belassen . Selbst wenn keine Ressourcen hinzugefügt werden, sich die Ressourcendatei jedoch noch im Projekt befindet, wird die vollständige (nicht benötigte) Neuerstellung durchgeführt.
Es scheint, dass nur das Hinzufügen einer Ressourcendatei zu einem (.NET 3.5) -Projekt dazu führt, dass Visual Studio 2010 dieses Projekt immer neu erstellt. Ist dies ein Fehler oder ein beabsichtigtes / erwartetes Verhalten?
Nochmals vielen Dank!