2013-03-08 65 views
1

我們已經爲我們的項目設置了TFS Build,但是在每一個版本中,系統拷貝了整個版本庫,然後編譯我們的解決方案。我們如何確保TFS Build只下載解決方案所需的文件,而無需手動隱藏每個不需要的目錄?現在它下載2GIG以上的數據只是爲了編譯一個小於100mb的項目(源文件)。其他數據是測試數據庫和自動構建不需要的文件。TFS Build拷貝完成版本庫

編輯: 一些進一步的調查讓我對一些關鍵字進行搜索。這些職位幫忙: Team Build - Get Workspace - get latest from specific paths, NOT everything

TFS Build and workspace

仍在調查,但。歡迎任何評論。

編輯: 一個選項是用我自己的擴展活動替換Build流程定義中的CreateWorkspace。我希望找出有人已經..基本上你會使用VersionControlServer對象來下載必要的文件,而不是整個工作區。

編輯 目前沒有真正的好答案/解決方案。我給出了一些選擇,被迴應的人給出了一些替代方案,但是您不能輕易更改TFS構建流程,只下載屬於解決方案而不是整個存儲庫的數據。所以,當你建立你的倉庫時請注意。

回答

2

如果您有多個構建代理,則應該限制構建定義可以運行的代理數量。這將停止將相同源的多個副本下載到構建機器上。

通過將Build Definition中的「Clean Workspace」選項更改爲構建代理將只下載當前構建和最後構建之間的變更集,您已經回答了下一個問題。

+0

這是有幫助的,我們有多個構建代理,但我寧願找到一種方法來限制文件下載到僅在解決方案中的文件。我很驚訝地發現,這似乎並不是默認情況下可用的。 – invalidusername 2013-03-08 14:45:28

+2

如果解決方案之外的內容的數量太大以致可能比您應該重新組織內容,那麼您可以查看tfs cloak選項。對於一般的Daves answear是正確的 - Clean Workspace設置輸出或無將限制下載源的數量。進一步來說,您可以爲所有代理實施中央工作區,並/或獲得自定義源代碼。 – drk 2013-03-08 15:44:12

+0

@invalidusername如果您關心的是磁盤空間,那麼按照我所說的去做,如果問題是NW帶寬,請查看TFS代理。 – DaveShaw 2013-03-08 15:49:34

3

您希望將Build Definition映射設置爲僅包含要編譯的源。這意味着你不必任何事情。

  • 編輯構建配置
  • 點擊源設置(VS 2012),工作空間(VS 2010)
  • 一個例子特定的映射是這樣的:

狀態源控制文件夾                                                   生成代理文件夾                               
活動$ /路徑/要/的/ SolutionOrProjectFolder    $(SourceDir)\                                                

這將使得此構建的workspace僅限於您希望構建的解決方案。因此,只有該文件下的AssemblyInfo文件對於您的構建活動纔可見。

如果你不能這樣做,由於你的源代碼控制是如何設置的,那麼我建議你在Source Control之內重構你的文件夾。