2011-06-14 86 views
2

我想建立一個持續的集成過程,其中服務器將生成VS2008 .SLN文件並執行一些其他操作。MSBUILD VS VS2008之間的差異生成

從Visual Studio構建時,一切正常。但是,當使用CI服務器(使用MSBUILD)構建時,構建許多MSB3191失敗(無法創建目錄...)

在我的SLN中,各種項目都有一個非默認輸出路徑,因爲我我正在將他們的所有輸出複製到一個位置,這似乎是導致問題的原因。

MSBUILD和VS中使用的構建有什麼區別?一個人如何成功而另一個人失敗?

另外,避免這類問題的最佳做法是什麼?

下面是從MSBUILD輸出:

「d:\ MasterBuild_Dev \ tlv_Platform \ UBUILD \ RecordersAutoFwk \ Main.sln」(缺省目標)(1) - > 「d:\ MasterBuild_Dev \ tlv_Platform \ UBUILD \迴歸自動化Framework \ Actions \ Common \ Common \ EM.Licensing.csproj「(默認目標)(46) - > (PrepareForBuild目標) - > C:\ Windows \ Microsoft.NET \ Framework64 \ v3.5 \ Microsoft。 Common.targets(790,9):錯誤MSB3191:無法創建目錄「........ \ RecordersAutoFwk \ Main \ bin \ Debug \ lib \」。無法創建「D:\ MasterBuild_Dev \ tlv_Platform \ UBUILD \ RecordersAutoFwk \ Main \ bin \ Debug \ lib」,因爲已存在具有相同名稱的文件或目錄。 [D:\ MasterBuild_Dev \ tlv_Platform \ UBUILD \迴歸自動化Framework \ Actions \ Common \ Common \ EM.Licensing.csproj]

+1

您能否運行msbuild Solution.sln/verbosity:diag> log.txt並顯示與錯誤相關的日誌行? – 2011-06-14 06:15:55

+1

您是否嘗試使用MSBuild在本地構建它?它是否以與構建服務器上相同的方式失敗? – 2011-06-14 06:20:36

+0

嘗試這兩個建議。 – 2011-06-14 06:27:22

回答

0

沒有更多的細節,我不得不說,你的帳戶之一有權限問題服務器。

VS在什麼情況下運行? MSBuild在哪個帳戶下運行?

+0

它與權限無關。我已經基本上將一堆項目的輸出路徑設置到同一位置。每當文件夾一開始創建,就沒問題。下一個想要創建該文件夾的項目因爲已經創建而失敗(這是我的假設,需要確認)。 – 2011-06-14 06:18:34

0

當我使用多個內核運行msbuild時,我有時會遇到像這樣的鎖衝突 - 使用/ maxcpucount:n,那麼似乎其中一個進程正在鎖定其他文件夾,然後我得到類似的東西。 沒有使用開關修復它,並沒有發生在所有SLN只是一些。 你沒有使用postbuild命令來進行復制,而不是構建輸出路徑?

如果我們知道你的msbuild命令會有幫助嗎?

+0

不確定,因爲Teamcity是調用構建的人員。在此期間,我切換到複製作爲後期製作命令,工作正常。 – 2011-06-16 00:20:24