Ich arbeite seit einiger Zeit an einem Legacy-ASP.NET-Webprojekt (im Gegensatz zu einem Webanwendungsprojekt) auf einem Client, und seine langsame Kompilierzeit hat mich neugierig gemacht:
Sind Website-Projekte beim Kompilieren als langsam (er) bekannt (als Web-Anwendungsprojekte)?
Es ist eine ziemlich kleine Website, aber die gesamte Lösung hat eine Menge Funktionalität - 19 Projekte, von denen 18 sehr schnell kompiliert werden (die Nicht-Web-Projekte). Das Website-Projekt selbst hat ~ 100 Seiten und ~ 15 Benutzersteuerelemente (diese nehmen ungefähr die Hälfte der Kompilierzeit in Anspruch) und kompiliert normalerweise innerhalb von 30 bis 60 Sekunden. Ein kompletter Wiederaufbau nähert sich dem Letzteren.
Also, einige Dinge, die ich glaube, könnten es verlangsamen (Sie entlarven sie):
Angenommen mein Kunde wird nicht mehr als ein paar Stunden genehmigen, um das Problem zu beheben. Gibt es schnelle Lösungen, Änderungen oder Optimierungen, die mir helfen könnten?
Ich habe keinen mickrigen Computer, daher ist seine Prozessorleistung kein Problem. Ich habe auch an Web-Anwendungsprojekten gearbeitet, die in Größe und Komplexität äquivalent sind und in wenigen Sekunden kompiliert werden können.
Ich bin für so ziemlich alles offen, also würde ich gerne Ihre Gedanken hören! Wenn du meinst, dies sollte ein Wiki sein, lass es mich wissen.
Meine Beobachtungen waren die gleichen: Website-Projekte dauern eine Weile, länger als Web-App-Projekte. Ich denke, ich habe einige Informationen darüber gefunden, warum, überprüfen Sie dies heraus: Ссылка
Suche nach "Iterative Entwicklung". Im Vergleich zu Web-Anwendungsprojekten wird dies über Website-Projekte gesagt:
Standardmäßig Visual Studio vollständig kompiliert Website-Projekte wann immer Sie führen oder debuggen jede Seite. Das ist getan, um Kompilierungsfehler zu identifizieren überall auf der Website. Jedoch a Komplette Website-Erstellung kann erheblich sein verlangsamen die iterative Entwicklung Prozess, so ist es allgemein empfohlen, dass Sie den Build ändern Projektoption zum Kompilieren nur der aktuelle Seite beim Ausführen oder Debuggen.
Lesen Sie zuerst diesen Blogpost Tipps zum Optimieren der Entwurfszeit-Buildleistung für Websites in Visual Studio 2005
Wichtigste Punkte:
Eine andere Option, die Ihnen helfen könnte, ist die Umstellung auf eine RAM-Disk: Laufende Entwicklung von einer RAM-Disk - Optionen und Produkte
Wenn das nicht hilft, könnte das Teilen Ihres großen WAP in mehrere die Kompilierungszeit verbessern. Leider erfordert diese Strategie, dass Sie Cassini entwickeln. Stattdessen müssen Sie IIS als Host verwenden: Mehrere Web Application Projects (WAP) in einer Lösung verwenden
Eine Tatsache, die die meisten Entwickler in einem ASP.NET-Webprojekt übersehen, ist die Anzahl der Klassen im Ordner App_Code .
Je mehr Klassen du hineinlegst, desto länger wird die Kompilierungszeit sein.
In der ASP.NET-Kompilierungsübersicht auf MSDN :
ASP.NET erstellt für jeden eine Assembly Anwendungsverzeichnis (wie z. B. App_Code) und einer für den Hauptbenutzer Verzeichnis. (Wenn Dateien in einem Verzeichnis sind in unterschiedlicher Programmierung Sprachen, dann separate Baugruppen wird für jede Sprache erstellt.)
Wenn Sie also die Ordnerhierarchie minimieren und die Anzahl der darin enthaltenen Klassen reduzieren können, wird wahrscheinlich die Kompilierzeit reduzieren
.
Eine andere Sache, die ich von Ihrer Post bemerkte, ist, dass Sie 18 Nicht-Website-Projekte haben.
Ich denke, es ist ein bisschen zu übertrieben, weil man so darüber nachdenkt.
Wenn die Webprojektkompilierung gestartet wird, muss der ASP.NET-Compiler die 18 separaten DLL-Dateien verknüpfen.
Wenn diese Projekte kombiniert werden können, um die Anzahl der DLLs zu reduzieren, kann auch helfen.
Aus Sicht der Wartbarkeit ist es mit 18 Projekten ein bisschen übertrieben, es sei denn, es gibt ECHTE Gründe, dies zu tun.
Ich würde vorschlagen, die Projekte zu überprüfen und zu kombinieren.
Ich hoffe, es hilft.
Dies ist vielleicht nicht ideal, aber Sie können Ihre Projekte in mehrere Lösungen aufteilen. Beispielsweise können Sie die Benutzersteuerelemente nehmen und sie in Lösung A und die übrigen Projekte in Lösung B einfügen. Kompilieren Sie dann die Steuerelemente in Lösung A und Dateiverweis auf sie aus Lösung B, die die Kompilierungszeit
reduzieren sollWebsite oder Web-Projekt, sollte die Leistung nach der Kompilierungsphase ähnlich sein. Wenn das Problem unmittelbar nach der Bereitstellung eines neuen Codesatzes eine schlechte Leistung ist, kann ich mir die Site vorveröffentlichen. (Siehe Referenz Ссылка )
Abhängig von den Optionen, die Sie während der Veröffentlichung auswählen, fehlt Ihnen möglicherweise die Flexibilität, Änderungen im laufenden Betrieb vorzunehmen (was Sie ohnehin nicht tun sollten).
Tags und Links asp.net performance compiler-construction web-site-project