2011-12-19 18 views
1

爲了加速構建,我們切換到了增量構建。一個在this MSDN page描述中,我增加了以下信息到我的構建項目:實施增量構建後,TFS/MSBuild在靜態內容上突破

<PropertyGroup> 
     <SkipClean>true</SkipClean> 
     <SkipInitializeWorkspace>true</SkipInitializeWorkspace> 
     <ForceGet>false</ForceGet> 
    </PropertyGroup> 

都能正常運作和建設進入快了很多。最近我一直在得到這些類型的錯誤是打破我的體型:

[任何CPU /發佈] C:\ PROGRAM 文件\的MSBuild \微軟\ VisualStudio的\ 9.0 \ web應用\ Microsoft.WebApplication。目標(60,3): 錯誤MSB3021:無法將文件「IMAGES \ tab \ black.gif」複製到 「D:\ Build \ Binaries \ Release_PublishedWebsites \ MyApp \ IMAGES \ tab \ black.gif」。 訪問路徑 'D:\ Build \ Binaries \ Release_PublishedWebsites \ MyApp \ IMAGES \ tab \ black.gif' 被拒絕。

此問題僅發生在有時。它是從來沒有一個DLL(如在其他問題上),但總是一個.gif或.css文件(靜態內容)。這些類型的文件如何被鎖定?

刪除臨時二進制目錄解決了下一個構建的問題......但這不像一個正確的解決方案。

回答

1

我的構建有同樣的問題,但是我們不執行增量構建。

爲我想出了是編輯生成定義並設置乾淨的工作空間選項(在過程>2.基本)到輸出(從無)這應該防止問題的解決方法它從發生和。這並沒有爲我們的構建增加太多的開銷,但它們是在SSD上完成的。

我認爲這是一個問題,一些文件被複制過來,只讀標誌仍然設置在它們上面,但從來沒有能夠弄清楚。

+0

這不是一種解決方法,因爲您禁用增量構建。如果將工作區選項設置爲輸出,則在構建之前在所有項目上調用Clean目標,並且需要重新構建項目。輸出選項對於用於部署的構建非常有用 - 更改將逐步獲得,並且項目將重建。 – Ludwo 2011-12-21 09:03:27

0

您的解決方案似乎有多個網站項目。每個網站都發布到相同的D:\ Build \ Binaries \ Release_PublishedWebsites \ MyApp文件夾。您在兩個或更多網站中使用相同的圖像名稱作爲內容。當這些網站項目並行構建時,網站有時會同時構建。一個網站項目試圖將其內容複製到輸出文件夾,而其他網站項目已將相同內容複製到目標文件夾。

+0

這是我最初的想法,但我沒有共享資源之間的網絡應用程序(只有DLL,但他們永遠不會失敗)。我沒有配置我的項目並行構建,我不確定它是否默認構建。 – 2011-12-21 09:22:41

+0

當您使用相同的引用並且引用的項目包含一些內容文件時,您可以在網站之間共享資源。內容文件與引用的dll一起被複制到網站輸出文件夾中。你可以嘗試建立你的網站到不同的文件夾?然後,您可以檢查是否只有一個網站正在使用圖像文件夾。 – Ludwo 2011-12-21 09:40:16