2011-08-23 62 views
1

我確信有一個簡單的答案,但我的google-fu失敗了。將標記文件提取到TFSBuild中

我在TFS 2008中有一個團隊項目,在使用最新的代碼時生成OK,但是現在我需要在構建時獲取文件子集的先前版本。文件的子集都標有相同的標籤(下面片段中的「MyLabel」)。

我加入是TFSBuild.proj文件的XML片斷如下:

這成功地提取文件到源區的子集,但它還會刪除源中的所有其他文件區。

即構建過程將執行以下操作:

  1. 獲取所有文件的最新版本到源區
  2. 獲取文件的子集的標記版本到源區
  3. 刪除所有非標記從源區域中的文件
  4. 運行建立

構建失敗,出現以下錯誤: C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ TeamBuild \ Microsoft.TeamFoundation.Build.targets(997,5):error MSB3491:無法將行寫入文件「[build directory] ​​\ Sources \ MySolution。 sln.x64.Release.vsprops」。找不到路徑'[build directory] ​​\ Sources \ MySolution.x64.Release.vsprops'的一部分。

(這基本上表明它無法找到解決方案,因爲它已經被刪除)

我試着將下面的代碼片斷到XML的底部:

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

但結果是一樣的。

所以,我的問題是:如果我的解決方案是最新版本和舊版本的混合標籤版本,我該如何構建解決方案?我錯過了什麼?

(我知道我可以只分支基線但由於種種原因,我想先探索這種方法)提前

謝謝!

回答

0

只是一個簡單的辦法,浮現在腦海中:

  1. 讓您的最新版本,以工作空間1
  2. 讓您的標記版本workspace2
  3. 的XCopy在workspace2工作空間1內容作爲後得到行動

你覺得呢?值得嘗試嗎?

+0

是的,我猜這會起作用。我曾希望能有一個更好的解決方案,但是缺乏答案似乎表明了另外一點。最後,我走下了分支路線,但我將爲未來銘記這一點。謝謝。 – glumesc

0

看着C:\ Program Files \ MSBuild \ Microsoft \ VisualStudio \ TeamBuild \ Microsoft.TeamFoundation.Build.targets,看起來版本獲取的版本是由GetVersion屬性控制的。 ForceGet默認爲true。

我沒有測試過,但是這意味着對我說,如果你把

/property:GetVersion=*versionspec* 

在MSBuild的命令行參數的文本框,當你排隊的構建,應該讀出指定版本(看here爲如果由於某種原因導致失敗,請閱讀Aaron Hallberg的blog,直到你理解msbuild比我更好:-)