Beschleunigung der Build-Zeiten in ASP.NET

8

Ich bin derzeit an einem ASP.NET-Projekt mit ungefähr 40 Projekten in der Lösung beteiligt. Wir machen unsere gesamte Entwicklung in geklonten Virtual PC-Umgebungen, sodass alle Entwickler identische Setups haben. Das ist alles gut, Abhängigkeiten zu verwalten ist einfach, aber die Lösung ist schrecklich langsam. Virtual PC kann nur eine CPU verwenden, daher verwende ich nur die Hälfte meiner Computerressourcen.

Es dauert ganze drei Minuten vom Build bis zur vollständigen Seitenauslastung .. und es wird jeden Tag schlimmer, wenn die Projekte wachsen. Das Reparieren einfacher Dinge fängt an, eine lange Zeit zu dauern und persönlich, werde ich frustriert, die ganze Zeit wartend, während ich nicht wirklich arbeiten kann, während der Computer kompiliert.

Gibt es eine Möglichkeit, meinen Build auf mehrere Computer zu verteilen, um den Buildprozess zu beschleunigen?

Würde eine SSD meine Bauzeiten merklich verbessern?

Gibt es eine andere Möglichkeit, den Build zu beschleunigen?

Hinweis : Ich habe versucht, statische Abhängigkeiten mit ngen vorzukompilieren, habe aber später gelesen, dass ASP.NET ngen nicht unterstützt. Ich benutze Visual Studio 2008 und es gibt keine Antivirus-Software in der virtuellen Umgebung.

    
zidar 21.04.2009, 09:11
quelle

10 Antworten

6

Sie können die Zeit, die Sie auf einen Build mit ASP.NET warten, erheblich reduzieren, indem Sie Folgendes tun:

  • Verwenden Sie das neue Flag "optimizeCompilations". Es wird .NET sagen, dass es nicht das gesamte Projekt neu erstellt, nur weil Sie ein Projekt / DLL geändert haben. Wenn Sie 40 Projekte haben und diese nicht verwenden, wird .NET jedes Mal, wenn Sie eine einfache Methode in einem Projekt ändern, versuchen, alle anderen Projekte und DLLs zu kompilieren. Mit der neuen Flagge (plus der Installation eines Hotfixes) werden Sie während der Entwicklung viel mehr Leistung sehen. In diesem Blogbeitrag finden Sie Details dazu, wie Sie den Build mit dem Flag optimizeCompilations beschleunigen können: Ссылка

Ich hoffe, es hilft!

Wagner Danda da Silva

    
wdanda 25.11.2009 20:32
quelle
4

Und hier ist ein weiterer Tipp, um Build-Zeiten mit ASP.NET zu beschleunigen:

  • Wenn Sie über genügend Arbeitsspeicher verfügen, erstellen Sie eine RamDisk und verweisen Sie Ihre ASP.NET-temporären Dateien auf diesen RAM-basierten Datenträger. In diesem Blogbeitrag finden Sie weitere Informationen zur Beschleunigung der Build-Zeit von ASP.NET-Projekten mit RamDisk: Ссылка

Ich hoffe, es hilft!

Wagner Danda da Silva

    
wdanda 25.11.2009 21:51
quelle
3

Müssen Sie alle 40 Projekte jedes Mal neu erstellen.

Sie können konfigurieren, was in den Einstellungen für die Lösungskonfiguration erstellt wird.

i.e. Wenn Änderungen nur in Ihrem WebUI-Projekt vorgenommen wurden und die anderen 39 Projekte unverändert sind, können Sie eine Buildkonfiguration erstellen, in der nur Ihre Webanwendung neu erstellt wird.

  • Sehen Sie sich das Drop-down-Menü für die Konfiguration an
  • Klicken Sie auf "Konfigurationsmanager"
  • Klicken Sie im Dropdown-Menü "Aktive Lösungskonfiguration" auf "Neu"
  • Erstellen Sie eine neue Konfiguration, die Sie aus der Debug-Konfiguration kopiert haben
  • Deaktivieren Sie in Ihrer neuen Konfiguration alle Projekt-Builds mit Ausnahme der Änderungen, die Sie in
  • vorgenommen haben
Eoin Campbell 21.04.2009 09:22
quelle
2

Scott Gu hat einen ziemlich hilfreichen Post darüber:

Tipp / Trick: Optimieren der Leistung von ASP.NET 2.0 Web Project Build mit VS 2005

Scott hat auch einen anderen Artikel über die Geschwindigkeit dieser Festplatte, der sich auch auf die allgemeine Leistung von Visual Studio auswirkt:

Tipp / Trick: Festplattengeschwindigkeit und Visual Studio-Leistung

    
CraigTP 21.04.2009 09:38
quelle
2

Fügen Sie nicht so viele Projekte in Ihre Lösungen ein. Erstellen Sie ein neues Projekt nur, wenn der Code in einem anderen Prozess oder auf einem anderen Computer ausgeführt wird. Es macht keinen Sinn, in den meisten Fällen so viele Projekte zu erstellen. Die Anzahl der Projekte ist die bedeutendste in msbuild.

    
Paco 21.04.2009 10:26
quelle
1

Sie haben Ihre Visual Studio-Version nicht erwähnt, aber wenn Sie 2005 sind, sollten Sie vielleicht ein Upgrade auf 2008 in Erwägung ziehen. In meinem Fall verringerte sich die Build-Zeit für eine größere Lösung (30+ Projekte).

Eine andere Möglichkeit, eine Reihe von Bibliotheken vorzubauen, die sich nicht mehr ändern, und statt der Projekte auf die kompilierten DLLs zu verweisen.

    
edosoft 21.04.2009 09:35
quelle
1

Wir haben eine ähnliche Situation und ich stellte fest, dass unsere virtuellen Maschinen stark gedrosselt wurden, und obwohl sie jeweils auf einer einzigen CPU liefen, durften sie diese CPU nicht vollständig nutzen. Ich schaffte es, 3 virtuelle Maschinen auf einer physischen Maschine laufen zu lassen, die alle 100% schneller arbeiteten.

Ich würde auch versuchen, die Anzahl Ihrer Projekte zu reduzieren. Unsere Hauptlösungen haben 40 Projekte, und ich konsolidiere diese langsam und stelle sicher, dass neue Entwicklungen möglichst in bestehende Projekte passen. Hauptverantwortlich dafür waren Webservices, die jeweils ursprünglich in einem separaten Projekt erstellt wurden. Ich füge jetzt alle neuen Webservices in ein einzelnes Projekt ein und bringe die anderen langsam voran.

    
cjk 21.04.2009 09:37
quelle
1

Sie sollten auch zu VMware Workstation wechseln, das mehrere Prozessoren verwendet. Ich verwende derzeit ein Setup mit zwei VMs mit zwei Prozessoren, und alle vier werden verwendet.

    
John Saunders 21.04.2009 10:11
quelle
1

Was wir in unserer Firma gemacht haben, ist die Verwendung von Dateiverweisen, so dass nur die geänderten Projekte erstellt werden müssen, und zu jeder Zeit gibt es nicht mehr als 10 Projekte in meiner Lösung, meistens werden 2 ~ 3 gebaut.

Wir bauen auch unseren Stamm für jeden Check-in und haben Batch-Dateien für Entwickler, um die neuesten DLLs zu ziehen.

Natürlich verhindert dies nicht, dass der schmerzhafte Assemblierungsreferenzfehler auftritt, aber nach einiger Zeit werden sie eher lästig als problematisch.

    
Bill Yang 23.08.2009 05:29
quelle
0

Haben Sie versucht, den virtuellen PC abzustimmen?

Ссылка

Alter Artikel, aber der Kern ist immer noch korrekt.

Ich fand in einer ähnlichen Situation, dass eine separate Festplatte für die VPC-Disk-Images die Leistung merklich beschleunigte, besonders wenn man etwas von der Drosselung entfernte.

Vielleicht ist das Problem nicht Visual Studio, es ist nur die Tatsache, dass die Kompilierung ressourcenintensiv ist.

    
DavidWhitney 21.04.2009 09:42
quelle