2009-05-14 25 views
2

Ich baue eine Lösung mit ungefähr 100 Assemblys, die eine beträchtliche Zeit zum Kompilieren benötigt. Ich würde im Bereich der Minuten pro Versammlung sagen. Dies steht im Gegensatz zu einem anderen Produkt auch mit mehr als 100 Baugruppen, die Sekunden dauern werden, um durch jeden zu gehen.Visual Studio-Build-Zeit

In beiden Fällen gibt es komplexe Abhängigkeiten und mehrere Referenzen und im zweiten Fall ist das Projekt tatsächlich größer, was nicht sinnvoll erscheint.

Ich habe über die CSPROJ-Dateien und SLN-Dateien geschaut und kann nichts Offensichtliches sehen, das die Kompilierung aufhalten würde.

Ich baue in VS2008 Professional Edition.

Hinweis: Die Verwendung von NANT-Skripten, die MSBUILD.exe verwenden, funktioniert exponentiell schneller -> Etwas in VS verursacht also eine starke Verlangsamung.

Hat jemand irgendwelche Vorschläge, anstatt die gesamte Lösung von Grund auf neu zu erstellen?

Danke.

+0

Wenn Sie msbuild in dem Ordner ausführen, der die Lösung enthält, dauert es viel weniger Zeit? –

Antwort

3

Es wurde herausgefunden, dass die Projektdateien Netzwerkpfade anstelle von lokalen Pfaden referenzierten. Wenn Sie diese Werte ändern, wird die Erstellungszeit wieder normal eingestellt. Danke allen, die geantwortet haben.

+0

Könnten Sie bitte näher darauf eingehen? Meinst du den Pfadstandort von Quelldateien im Projekt oder dass bestimmte Variablen in der Anwendung auf Netzwerkpfade verweisen? Ich habe ein Projekt, das nicht auf meiner neuen Maschine aufbauen wird, während andere es tun und sind ratlos ... – andyhasit

3

Haben Sie irgendetwas in den Abhängigkeiten, das viele Projekte zwingt, jedes Mal neu aufgebaut zu werden? Zum Beispiel, wenn Sie einen Pre-Build-Schritt haben, der eine Code-Generierung ausführt, und alles auf dieses Projekt angewiesen ist, könnte das ein Mörder sein. Ich bin vor einiger Zeit auf diese Situation gestoßen - habe den Code-Generator benachrichtigt, wenn seine Eingaben nicht geändert wurden, und die Ausgabe in solchen Fällen nicht umgeschrieben, gespeicherte lädt der Zeit.

Nebenbei, brauchen Sie wirklich 100 Projekte in der gleichen Lösung? Das wird ziemlich langsam sein, was auch immer du tust, denke ich. Ich würde in Betracht ziehen, entweder Projekte zu verschmelzen (ich habe verschiedene Situationen gesehen, in denen die Leute viele und viele kleine Projekte hatten - das Zusammenführen hat wirklich geholfen) oder die einzelne Lösung in mehrere aufgeteilt.

EDIT: Eine Sache, die Sie vielleicht versuchen, den GUI-Teil von Visual Studio aus der Gleichung zu nehmen, ist es mit msbuild von der Kommandozeile aus zu bauen, ohne dass VS überhaupt läuft.

+0

Viele der Abhängigkeiten sind ähnlich denen des zweiten Beispielprojekts, das zuvor erwähnt wurde, und das baut gut auf. Wenn ich genauer hinschaue, kann ich nichts Merkwürdiges sehen. Re: Ihr 2. Punkt, einverstanden. Und in der Zukunft Assemblies zusammenbauen. – Grant

0

Haben Sie irgendwelche Visual Studio-Plug-Ins, die etwas wie das Indizieren der Dateien beim Erstellen tun?

Haben Sie die Optionen für die Verwendung aller Prozessoren festgelegt, die auf Ihrem Computer verfügbar sind?

Gibt es noch andere Prozesse auf Ihrem Computer, die CPU-Zyklen stehlen oder die Festplatte beschädigen können? Sie können den Task-Manager oder den Prozess-Explorer verwenden, um nach diesen zu suchen.

+0

Hallo, nein, es gibt keine Plugins oder ähnliches. Ich bin Teil eines Teams von Entwicklern und mindestens 4 oder wir haben das gleiche Problem in isolierten und einzigartigen Umgebungen ..... – Grant

2

Vielleicht verwenden Sie ein Werkzeug wie FileMon zu überwachen, was VS schreibt/lesen, während es verzögert wird. Vielleicht gibt dir das einen Hinweis. Ich fand es sehr nützlich zu verstehen, was Anwendungen tun (vorausgesetzt, es gibt I/O-Aktivität zu überwachen)

+0

Dank Harlev, wird es eine Chance geben – Grant

0

Hat die langsame Lösung viele ASP.NET-Dateien/Projekte? Das Kompilieren von Tags scheint immer länger zu dauern als C#/VB

+0

keine ist eine winforms/Klassenbibliothek Anwendung. C# und vb.net – Grant

Verwandte Themen