2010-01-16 15 views
2

我的團隊目前正在研究ASP .NET網站。我們是我們組織中使用TFS2008進行源代碼控制的首批團隊之一。當我加入這個項目時,它已經運行了幾個月。下面是基本的文件結構圖,我們使用TFS中:TFS項目結構使簡單的事情變得困難

$/TfsProject/ 
| 
| /* Contains our in-house class libraries. */ 
|-- Common/ 
| | 
| |-- Extensions/ 
| | |-- Extensions.csproj 
| | 
| |-- Loggers/ 
|  |-- Loggers.csproj 
| 
| /* Contains third-party libraries. */ 
|-- Library/ 
| | 
| |-- EnterpriseLibrary/ 
|  | 
|  |-- v4.1/ 
|   |-- Microsoft.Practices.EnterpriseLibrary.Common.dll 
| 
| /* Contains the website itself. */ 
|-- Site/ 
    | 
    |-- Packages/ 
    | |-- Packages.csproj 
    | 
    |-- Website.root/ 
     | 
     |-- Website/ 
      |-- Website.sln 
      | 
      |-- Website/ 
      | |-- Website.csproj 
      | |-- Default.aspx 
      | 
      |-- WebsiteUnitTests/ 
      | |-- WebsiteUnitTests.csproj 
      | 
      |-- WebsiteWebControls/ 
      | |-- WebsiteWebControls.csproj 
      | 
      |-- Utilities/ 
       |-- Utilities.csproj 

主要網站解決方案(Website.sln)目前包含15個項目(包括每個圖中顯示的.csproj文件)。昨天做出決定,Common目錄中包含的項目應該被移到他們自己的解決方案中,我們應該通過引用編譯的DLL而不是項目本身來將它們包括在網站中。任何時候Common項目中的任何一個都會更新,所有其他使用它的項目都應該以最小的努力開始使用最新版本。

有沒有簡單的方法來實現這一點,根據我們當前的層次?我已閱讀TFS patterns & practices指南,但實施其任何建議都需要進行重大更改(以及更新我們的所有項目和解決方案)。此外,我們的組織正在等到TFS2010發佈之前,他們啓用團隊建設 - 所以他們無法爲我們。

回答

2

更「便攜」的解決方案將是專門爲共享項目/解決方案構建一個構建。這些版本的最後一步是將二進制文件檢入到發佈文件夾(可能在/庫下)。在獲取客戶端項目(引用二進制文件的項目)的最新消息時,您最終會獲得最新的二進制文件。您不會失去分支客戶項目的能力,團隊成員可以自由選擇映射文件夾。

我會說整體來說,你應該重新考慮你的文件夾結構。它不允許有一個非常靈活的分支結構。您似乎正在使用您的TFS存儲庫,與許多VSS用戶歷史上所使用的一樣:作爲版本化的文件系統。

+0

同意這兩點。如果沒有其他問題,請將Common + Library + Site移到單一父項下。否則,如果不創建全新的團隊項目,您將永遠無法分支代碼。 –

+0

過去我已經提出了分支,但是達成了一致意見,認爲這隻會使事情進一步複雜化。 –

+0

分支應該既是團隊又是個人選擇,但我明白。非常小的事情可以做,使分支非常容易有興趣這樣做的人。團隊成員不會受到個人生產力分支的影響。 –

1
  • 可工作的解決方案是有 全部共用輸出項目 同一個目錄(「C:\ TEMP \ dll文件」), 而不是每個本地/ bin文件夾。

  • 該目錄然後可以添加到 Web項目解決方案。對DLLS的所有 引用應該被製作成 到從TFS提取的公共文件夾。

  • 該目錄可以添加到TFS作爲 文件夾。團隊中的每個人將 都必須將本地映射文件夾 與解決方案文件的相同路徑 相關聯。

  • 其中「最小的代價」 片打破了這個地方的是,文件 將輸入/輸出進行檢查時 編譯。其餘的隊伍將 然後必須GetLatest。該GetLatest 要求實際上可能會更好,因爲 你不想改變被迫 給你,而你在 發展中間做。

你基本上結束了具有添加到Web項目解決方案編譯的DLL的文件夾。這也是所有Common dll構建的文件夾。該文件夾是Web解決方案中的所有項目都引用Common Dll的地方。當有人重建時,他們必須檢查文件夾中的dll,然後重新檢入。當開發人員需要最新版本時,他們會調用GetLatest文件夾並重建其項目。

這實際上在我們編譯dll來引用類似的情況下工作。我們的區別在於編譯後的dll很少發生變化,整個「GetLatest」範例從未發揮作用。