我通過調用子進程通過Python構建了Visual Studio 2010解決方案。直接從命令行調用時,需要devenv.com約15秒才能啓動。但是當從Python調用時,這會跳到〜1.5分鐘。使用MSBuild.exe增量構建
當然,我希望從我們的構建中消除死亡時間。所以我決定測試MSBuild.exe(從.NET 4開始)。它看起來像MSBuild.exe立即運行。但是......它似乎每次都做一個完整的構建,而不是一個增量。
我使用的命令是
"C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" "C:\path\to\my\project.sln" /target:build /maxcpucount:8 /property:Configuration=Release
看起來這應該支持增量構建。但是我在網上看過帖子,指出msbuild可能無法支持像這樣的增量構建。
這可能嗎?如果是這樣我做錯了什麼?
更新:
我已經讀了更多一點。基於
http://msdn.microsoft.com/en-us/library/ms171483.aspx
和
http://www.digitallycreated.net/Blog/67/incremental-builds-in-msbuild-and-how-to-avoid-breaking-them
好像我需要在我.vcxproj文件中設置的輸入和輸出特性。檢查出我的文件這些確實缺失。
什麼時候生成它們?大多數我的.vcxproj文件是從Visual Studio 2008轉換而來的。但是我也生成了一個缺少輸入和輸出屬性的新項目。
是否VS2010不創建具有這些屬性的項目?
更新:我們已經升級到VS 2013.現在msbuild支持增量構建。從來沒有達到VS 2010問題的底部。
你在哪裏看到MSBuild不支持增量構建的信息?你可以發佈URL或指針如何找到它? – 2014-11-06 00:52:07
這是我發現的帖子。 https://social.msdn.microsoft.com/Forums/vstudio/en-US/8123dce6-7177-4fd7-b59c-51ef1359e60d/msbuild-task-is-not-incremental。使我認爲增量構建不受支持的觀點是「無論是作爲系統的MsBuild還是作爲任務的MSBuild都不能提供知道正在構建的.sln的輸入和輸出的方法。」但我不清楚這個陳述有多準確。因此,這個問題。 – 2014-11-06 11:43:11