Konfigurieren von VS, um nur geänderten Code zu kompilieren

8

Ich habe eine sehr große Lösung, und es kompiliert jedes Mal, wenn ich versuche, zu debuggen.
Ich weiß also, dass ich das Erstellen aller Projekte in der Lösungskonfiguration überhaupt deaktivieren kann, aber gibt es eine Möglichkeit, Visual Studion zu sagen, nur geänderten Code zu kompilieren? Ich bin mir sicher, dass das ist.

Danke für die Zukunft.

    
rodnower 23.03.2011, 09:05
quelle

4 Antworten

8

Wie Marnix und Anton bereits gesagt haben, ist das normalerweise VS. Wenn Sie jedoch viele Projekte in Ihrer Lösung haben, die voneinander abhängig sind und Änderungen an einer Komponente vornehmen, die von allen oder den meisten anderen Projekten verwendet wird, müssen auch die anderen erneut erstellt werden, um sicherzustellen, dass alles wie erwartet funktioniert .

Aktualisieren

Wenn es also beginnt, sich neu zu kompilieren, selbst wenn Sie keine Änderung vorgenommen haben, müssen wir herausfinden, wie VS versucht, herauszufinden, was es auf einem inkrementellen Build zu tun hat.

Dazu überprüft es einfach die Datumswerte jeder Datei und ob es Änderungen gibt. Wenn ja, kompilieren Sie diese Datei und alle ihre Abhängigkeiten neu (z. B. werden Änderungen in einer stdafx.h zu einer vollständigen Neuerstellung führen, weil normalerweise jede Quelldatei auf diese verweist).

Aber es gibt auch Ausnahmen für dieses Verhalten. Ein Setup-Projekt zum Beispiel wird immer neu erstellt, auch wenn keine Änderungen vorgenommen werden (aufgrund dieser Tatsache schließe ich normalerweise das Setup-Projekt vom integrierten Prozess aus und starte es nur manuell, wenn es benötigt wird).

Wenn Sie also nur C / C ++ -, C # -, VB usw.-Projekte haben, die normalerweise inkrementelle Builds unterstützen, muss sich zwischen zwei Builds etwas ändern, auch wenn Sie nichts ändern.

Hier sind einige Möglichkeiten:

  • Ein vor oder nachgebauter Befehl, der eine Änderung an einer Quelldatei vornimmt
    • Dies kann möglicherweise eine automatische Aktualisierung des Hinzufügens der Revisionsnummer aus Ihrem Repo in eine Ressource der AssemblyInfo-Datei sein.
    • oder ein copy / delete -Befehl, der einige Änderungen in Ihrer Verzeichnisstruktur vornimmt (ich habe dieses einmal verwendet, um das Ausgabeverzeichnis in einem vorgefertigten Befehl zu löschen, um eine Neuerstellung auf jedem Build zu erzwingen).
  • Ein automatischer Inkrementierer der Assembly-Version
    • vielleicht mit [assembly: AssemblyVersion("1.0.*")] oder einem anderen externen Prozess, um die gebaute Zahl zu erhöhen

Wenn einer der obigen Schritte mit einem Modul passiert, von dem alle oder die meisten Ihrer anderen Projekte abhängen, muss alles neu erstellt werden.

    
Oliver 23.03.2011, 09:20
quelle
2

Visual Studio macht das eigentlich sofort, wenn Sie einen Build (kein Rebuild) machen. Es wird sich jedoch mit einigen Projekttypen besser befassen als mit anderen. Beispielsweise wird immer ein Setup- oder Bereitstellungsprojekt erstellt.

Sie könnten jedes Projekt entladen, das Sie nicht benötigen, um den Build zu beschleunigen.

Außerdem finde ich es gut, die Anwendung ohne Debuggen zu starten und den Debugger anzuhängen, sobald die Anwendung ausgeführt wird. Soweit ich das beurteilen kann, minimiert dies die Anzahl der Debug-Symbole, die geladen werden, auf das, was tatsächlich von der laufenden Anwendung verwendet wird.

Soweit ich weiß, erkennt MSBuild (die Build-Engine, die von VS verwendet wird) automatisch, was neu zu erstellen ist, basierend darauf, welche Dateien geändert wurden. Stellen Sie also sicher, dass Sie keine generierten Dateien haben, die mit jedem Build aktualisiert werden. Zum Beispiel, wenn Sie die (Assembly-) Version mit Quellcode-Metadaten aktualisieren. Jede geänderte Datei löst einen Build aller Projekte aus, die sie verwenden, sowie alle Projekte, die von ihnen abhängen. Ein Setup wie dieses wird effektiv die meisten Ihrer Anwendung jedes Mal neu erstellen.

    
Marnix van Valen 23.03.2011 09:16
quelle
0

Sie sollten "Build Solution" verwenden. Überprüfen Sie diesen Link Ссылка

    
Anton Semenov 23.03.2011 09:10
quelle
0

Ich füge das hinzu, da niemand es erwähnt hat - wenn Sie ein Installer-Projekt in Ihrer Lösung haben, wird dieses Projekt jedes Mal neu erstellt, wenn Sie das Programm neu erstellen oder ausführen, selbst wenn sich keine anderen Projekte geändert haben. Da Gebäude-Installer-Projekte sehr viel Zeit beanspruchen können (~ 45 Sekunden auf meinem Computer, für mein mittelgroßes Projekt) , ist das ein Problem.

Um das Problem zu lösen, gehen Sie einfach in den Konfigurationsmanager (klicken Sie mit der rechten Maustaste auf Lösung - & gt; Eigenschaften - & gt; Konfigurationseigenschaften) und deaktivieren Sie das Installer-Projekt im Debug-Modus.

    
quelle

Tags und Links