Ich baue eine Visual Studio 2010-Lösung durch Python mit einem Aufruf an Subprozess. Bei einem direkten Aufruf von der Kommandozeile dauert es devenv.com ~ 15 Sekunden um zu starten. Aber wenn es von Python aufgerufen wird, springt das auf ~ 1,5 Minuten.Inkrementelle Build mit MSBuild.exe
Natürlich hoffe ich, diese tote Zeit von unserem Build zu entfernen. Also entschied ich mich, MSBuild.exe (von .NET 4) zu testen. Es sieht so aus, als ob MSBuild.exe sofort ausgeführt wird. Aber ... es scheint jedes Mal einen vollen Build zu machen und nicht inkrementell.
Der Befehl Ich verwende ist
"C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" "C:\path\to\my\project.sln" /target:build /maxcpucount:8 /property:Configuration=Release
Es scheint, wie dies eine inkrementelle Build unterstützen sollte. Aber ich habe Beiträge online gesehen, die darauf hinweisen, dass msbuild möglicherweise nicht in der Lage ist, einen inkrementellen Build wie diesen zu unterstützen.
Ist das möglich? Wenn ja, was mache ich falsch?
Update:
Ich habe in diese ein bisschen mehr lesen.
Basierend aufhttp://msdn.microsoft.com/en-us/library/ms171483.aspx
und
http://www.digitallycreated.net/Blog/67/incremental-builds-in-msbuild-and-how-to-avoid-breaking-them
Es scheint, wie ich die Input- und Output-Eigenschaften festgelegt in meinen .vcxproj Dateien benötigen. Beim Auschecken meiner Dateien fehlen diese tatsächlich.
Wann würden sie generiert werden? Die meisten meiner .vcxproj-Dateien wurden von Visual Studio 2008 konvertiert. Aber ich habe auch ein neues Projekt erstellt, dem auch die Eigenschaften Input und Output fehlen.
Erstellt VS2010 keine Projekte mit diesen Eigenschaften?
Update: Wir haben seit Upgrade auf VS 2013. Jetzt unterstützt Msbuild inkrementelle Builds. Das Problem mit VS 2010 wurde nie gelöst.
Wo haben Sie Informationen gesehen, dass MSBuild inkrementelle Build nicht unterstützt? Könnten Sie URL oder Zeiger wie Sie es finden? –
Dies ist der Post, den ich gefunden habe. https://social.msdn.microsoft.com/Forums/vstudio/en-US/8123dce6-7177-4fd7-b59c-51ef1359e60d/msbuild-task-is-not-incremental. Der Punkt, der mich glauben ließ, dass ein inkrementelles Build nicht unterstützt wurde, war "Weder MsBuild als System, noch MSBuild als Task bieten ein Mittel, um die Ein- und Ausgänge in Bezug auf eine .sln zu kennen, die gebaut wird." Aber ich bin unklar, wie genau diese Aussage ist. Daher diese Frage. –