2014-11-05 68 views
5

我通過調用子進程通過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問題的底部。

+1

你在哪裏看到MSBuild不支持增量構建的信息?你可以發佈URL或指針如何找到它? – 2014-11-06 00:52:07

+0

這是我發現的帖子。 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

回答

2

我認爲事實是增量版本是不支持是據官方消息稱,Managed Incremental Build此功能的虛假陳述而被列入VS2010 SP1

我們首先介紹了VS2008的託管增量生成功能。 在VS2010中,我們無法重新實現構建系統移植到MSBuild時的管理增量 構建功能。我們收到了 強烈的客戶對此功能的要求。因此,我們 重新實現了此功能,它包含在VS2010 SP1中。

其他解決方案我的Web

  • 項目應該建立增量已經找到(只是確保你 要建造,而不是重建)。檢查構建是否增量的最好方法是從命令行運行構建。第二個 時間你應該幾乎沒有時間。

    如果事情還在重建中,那麼您可能已經以某種方式修改了 您的項目,這與設計順序有關。 查看構建日誌(通過/ v選項)可以幫助您找到 發生了什麼事情。

  • 可能導致增量構建問題的其他原因是GenerateResource.TrackFileAccess Property此API支持.NET Framework基礎結構,不適合在代碼中直接使用。 獲取或設置一個開關,指定我們是否應該跟蹤文件訪問模式。
+1

Ahhhh ....這是有道理的。我沒有安裝Service Pack 1.在初始版本中,有什麼不同尋常的功能。 – 2015-02-18 10:27:07

+0

@ShaneGannon同意:)! – 2015-02-18 10:29:33