2009-01-22 42 views
3

在閱讀了我已經遵循幾個問題的Team Foundation Server Source Control Structure之後,想到了我想知道是否有人可以發表評論。如何處理團隊基礎服務器源代碼管理結構中的共享項目

我有幾個組件構成了我正在開發的項目。我有一個smartclient,一個webservice,一個smartclient使用的webservice代理,一個守護進程和一個用於smartclient和webservice的公共實用程序庫。 每個組件都與同一個工作項目相關。

我已經構建了我的源代碼樹,以便每個組件都是獨立的 - 換句話說,每個組件(smartclient,webservice,守護進程,代理,公共實用程序)都有自己的主幹和自己的解決方案文件,因爲我想成爲能夠獨立釋放每個組件。對於其他組件使用的組件,例如使用代理的智能客戶端和公共實用程序,我創建了與其他第三方庫(引用的二進制文件而不是項目)相同的版本。任何人都可以證實這是一種最佳做法,如果不是這種做法應該如何做?

我一直在使用tfs構建構建我的組件的版本,並且想知道如果在構建輸出目錄中的所有tfs構建所在的位置以外的任何位置,我應該將其發佈到哪裏。我是否應該將它們(例如由智能客戶端使用的代理髮布程序集)與任何其他第三方庫一起檢查到TFS,然後在要使用它們的發佈程序集中進行分支(例如,將分支代理髮行版DLL移動到smartclient lib目錄) ?

回答

1

所以你基本上是指通常所說的「依賴複製」。 利用Team Build並複製您的依賴關係。有一個名爲「依賴複製器」的工具,它可以讓你連鎖在一起。

因此,例如,您的實用程序類可能不會有太大變化。但是當它的時候,你需要確保: A)它建立在服務器上 B)所有相關的項目也建立。

依賴關係複製器允許您指定(以XML形式)程序集彼此之間的依賴關係,以及更新依賴關係時要運行哪個「構建」。

+0

對於Common Utilities庫,我說的是1.0,1.1和1.2版本,它們都是有效的,可以用在不同的組件中。 Smartclient依賴於1.0,而Webservice依賴於1.1。我是否正確地爲每個組件準備了一個後備箱? – Fadeproof 2009-01-22 10:34:06

2

我們所做的是在包含對應於每個主要共享項目的子文件夾的TFS服務器上創建公共\ common共享。例如: -

 
\\common 
    \sharedproject1 
     \v1.0.0 
     ... 
     \vN.0.0 
    ... 
    \sharedprojectN 

我們的每一個非共享項目參考特定的共享組件在\ 共同 \ sharedprojectN符\ v M.m.n.

我們首先在需要時運行共享項目的自動構建。
然後,將構建質量更改爲特定值(例如「準備參考」)表示構建的輸出需要自動複製到這些共享版本之一。

然後,我們可以使用這些共享項目的輸出爲項目運行自動構建。
我們使用其他構建質量狀態(例如「準備好系統集成」)來指示主應用程序的構建已準備好部署到特定環境(例如測試)。
這會觸發將項目輸出打包到我們公開的\ release共享中的特定發佈文件夾。

最後,我們使用自動部署工具將給定版本安裝到給定目標環境中的相應服務器上。

相關問題