Sind ASP.NET-Website-Projekte bei der Kompilierung inhärent langsam, oder könnte ich tiefere Probleme haben?

10

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):

  • (X) HTML-Validierungsprobleme (der von uns geerbte Code enthält Tausende von Compiler-Warnungen zu Validierungsproblemen).
  • Hohe Abstraktionsgrade - Da der Code für die Webseiten zur Laufzeit kompiliert wird, vermute ich, dass das, was es für Benutzersteuerelemente macht, ein langwieriger Prozess ist, damit die Bindung zur Kompilierzeit funktioniert passieren.
  • Die bloße Größe der Website? Ich weiß, dass dies keine sehr effizienten Projekte sind, und glauben Sie mir, ich habe stundenlang versucht, sie in eine Webanwendung zu konvertieren, aber Visual Studio konnte eine einzelne ASPX-Datei nicht in ihre ASPX / .designer.xx-Komponenten zerlegen, weil der Validierungsprobleme, die ich bereits erwähnt habe.

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.

    
Cᴏʀʏ 15.07.2009, 16:28
quelle

5 Antworten

3

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.

    
Frank Schwieterman 15.07.2009 17:06
quelle
2

Lesen Sie zuerst diesen Blogpost Tipps zum Optimieren der Entwurfszeit-Buildleistung für Websites in Visual Studio 2005

Wichtigste Punkte:

  • Deaktivieren Sie die Stapelkompilierung nicht
  • Serverseitige Kompilierung verwenden
  • Verschieben Sie App_Code-Dateien in ein separates Klassenbibliotheksprojekt
  • Auf widersprüchliche Abhängigkeiten prüfen
  • Deaktivieren Sie AutoToolboxPopulate in den Windows Forms Designer-Optionen.
  • Deaktivieren Sie die Validierung für die HTML-Bearbeitung

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

    
Tobias Hertkorn 15.07.2009 16:59
quelle
1

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.

    
stun 15.07.2009 17:22
quelle
0

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 soll     
Leon 15.07.2009 22:28
quelle
0

Website 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).

    
o.k.w 16.07.2009 11:28
quelle