2011-06-27 54 views
2

我使用C#和TFS SDK開發特定生成的自動化任務的小型應用程序2008交易在編程TFS

我懷疑我們是否能夠運行鍼對TFS任務交易代碼;例如,我想簽入一個更改,然後自動創建一個標籤,如果標籤創建因某些故障而失敗,我想回滾最後一次更改。

這是可用的,或者我應該編碼?

回答

-1

是的。我建議把這個分成兩個任務。從第一個任務返回成功/失敗代碼,使用MS BUILD將很容易實現。如果第一個任務成功,那麼執行第二個任務。

HTH

乾杯,塔倫

+0

問題不在於第一項任務成功,它與創建標籤失敗有關。在這種情況下,您不能將該標籤創建通過/失敗回傳給已執行的步驟。 –

1

您必須編寫這 - 的MSBuild支持這個功能雖然。

您的第一步是檢查文件。

<Target Name="Checkin" /> 
<Exec Command="Command_To_Checkin_File" /> 
</Target> 

下一步是創建一個標籤。儘管如此,如果出現錯誤,我們將回滾結帳。

<Target Name="CreateLabel" /> 
<Exec Command="Command_To_Create_Label" /> 
<OnError ExecuteTargets="UndoCheckout" /> 
</Target> 

最後,添加命令以撤消結帳。籤,結賬的

<Target Name="UndoCheckout" /> 
<Exec Command="Command_To_Undo_Checkout" /> 
</Target> 

實施例和撤消:

對於所有

<Exec WorkingDirectory="$(SolutionRoot)" Command=" /> 

$(TF) checkin /comment:&quot;Auto-Build: Version Update&quot; /noprompt /override:&quot;Auto-Build: Version Update&quot; /recursive " /> 

結帳

$(TF) checkout /recursive $(FilePath)" /> 

撤消

$(TF) undo /noprompt /recursive $(FilePath)"/> 
+0

命令「Command_To_Checkin_File」,「Command_To_Create_Label」和「Command_To_Undo_Checkout」是否已經存在?如果沒有,那麼爲什麼不創建一個「try catch」塊呢? 我想到了TFS SDK中內置的用於事務和回滾的更多內在功能。 –

+0

我投了你的答案1 up –

+0

是的,這些命令已經存在。我這樣寫的原因是因爲命令與路徑有關。我應該寫出來並顯示路徑區域正在改變。我會更新答案 –