2009-01-10 3 views
20

Ich habe moderate Größe Lösung in Visual Studio, die etwa 5 Minuten dauert zu bauen (Es dauert so lange wegen FxCop und andere Post-Build-Schritte). Mein Problem ist, Visual Studio reagiert nicht mehr während der Erstellung. Sie können nicht weiterarbeiten, da VS fast hängt. Ich habe versucht, zwei VS-Instanzen zu verwenden, nur einen für Build verwenden, aber es stürzt immer wieder ab.Best Practices, wenn Ihr Build zu lange dauert in Visual Studio

Meine Frage ist, wie man keine Zeit damit verschwendet, Visual Studio zu betrachten, das Ihr großes/gemäßigtes Projekt aufbaut. Gibt es dafür Best Practices?

Antwort

7

Zwei ausgezeichnete MSBuild Tipps, die ich gerade gestern gelernt ...

Sie können mithilfe der Option/m Aufgaben parallel ausführen: n wechseln, wobei n die Anzahl der Prozessoren zu verwenden ist. Alles, was Sie tun müssen, ist BuildInParallel auf Ihrem MSBuild-Task.

Der andere Trick besteht darin, dass, wenn Sie mehr < exec/> Aufgaben Sie sie auch tatsächlich parallel laufen zu laufen < exec command = „sleep 10 | Schlafes 10 | Schlafes 20“ durch den Aufruf/> durch das Rohr mit Zeichen zwischen jedem Befehl. Ein praktisches Beispiel:

<CreateItem Include="server1;server2;server3;server2"> 
    <Output ItemName="IISServer" TaskParameter="Include"/> 
</CreateItem> 
<CreateProperty Value="@(IISServer->'iisreset.exe /start %(Identity)', '|')"> 
    <Output TaskParameter="Value" PropertyName="IISServerStartAll" /> 
</CreateProperty> 
<exec command="$(IISServerStartAll)" /> 
+0

Das ist interessant, klingen wie mehr Geschwindigkeit kostenlos. Aber ich weiß * absolut * nichts über Build. Wenn ich starte und Debug "Builds" in VS wo finde ich diese Datei oder ändern Sie die Einstellung in der Benutzeroberfläche? –

+0

Dies wäre in MSBuild-Skripten, die Sie selbst schreiben.Ich würde definitiv empfehlen, FxCop aus jedem Build herauszunehmen, das ist unnötig. Sie können separate Build-Prozesse in VS einrichten. Ich würde vorschlagen, dass Sie nur das kompilieren, woran Sie gerade arbeiten, und eines, das alle Ihre Code-Prüfungen und Tests durchführt. – DavGarcia

+0

+1 Die Sie könnten die [potenziell Ziel] PropertyGroup/ItemGroup-Syntax verwenden, um das Beispiel noch klarer zu machen ... Auch Extras | Optionen Projekte und Lösungen | Build und Run | maximale Anzahl paralleler Projekt Builds steuert es extern –

5
  1. Sie müssen sicher nicht eine statische Code-Analyse jedes Mal laufen zu lassen Sie Ihre Lösung bauen .
  2. Reduzieren Sie die Anzahl Ihres Projekts von Zusammenführen könnte auch eine Menge helfen.

Welche anderen Post-Build-Aufgaben haben Sie eingeführt?

+1

+1 Ein zustimmen damit, sollten Sie in Betracht ziehen, einen Build-Server mit CruiseControl.NET, die Ihre statische Code-Analyse, Komponententests, Code-Coverage (Ncover), Coding-Standards (StyleCop), Klassenstrukturanalyse ausführen (NDepends), etc ... Sie können einen Build erstellen, bevor Sie einchecken. – DavGarcia

+0

TeamCity ist wirklich einfach einzurichten ... –

+0

Aus diesem Grund führen wir im DEBUG-Modus keine Analyse aus. Sobald der Entwickler glaubt, dass sie sich dem Ende des Entwicklungszyklus nähern, setzen sie ihn in den Freigabemodus, in dem wir unsere Codeanalyse usw. ausführen. – DrGriff

0

Sie könnten eine dedizierte Build-Maschine mit MSBuild in Erwägung ziehen. Von dort aus könntest du während des Kompilierens weiterarbeiten. Es macht es jedoch komplizierter, wenn Sie Netzwerkprobleme einführen.

-1

Sie können Klassen in einem anderen Projekt erstellen, indem Sie die Klassen stubben, die Sie zum Kompilieren des Codes benötigen. Auf diese Weise können Sie Ihren neuen Code testen und dokumentieren. Danach fügen Sie es einfach in das reale Projekt ein und kompilieren "für echt". Bei der Kompilierung arbeiten Sie bereits an einem weiteren Snippet des Projekts, da Sie zu 95% erfolgreich kompiliert werden. Oder, wenn es kompiliert wird, können Sie auch Ihre Komponententests schreiben.

+0

Das Problem ist nicht "was zu tun ist, während es kompiliert", sondern mehr "wie Um Visual Studio während des Kompilierens zu verwenden, führt das Starten von zwei Instanzen zum Absturz ". –

1

Verwenden Sie Incredibuild, wenn Sie mehr als einen Computer haben oder dieses Programm zu einem anderen Freunde bei der Arbeit einrichten. ist es einfach einzurichten und zu verwenden. Beschleunigung ist linear zum Kompilieren.

es auch für Multi-Core-CPUs bacause gut ist in der Regel gegen einen Kern für ein Projekt verwendet aber IncrediBuild es für jede CPP-Datei parallel auszurichten ...

versuchen und sehen .. :)