2009-04-17 82 views
4

我們使用Team Foundation Server並擁有大量ASP.NET Web應用程序項目。每個Web應用都使用我們自行開發的自定義內容管理系統。 CMS本身就是一個ASP.NET Web應用程序。如何版本跨項目共享的資源

部署時,CMS駐留在子目錄中,如「/ Admin」。 CMS由.aspx和ascx文件組成,當然,相應的程序集放在bin中。

目前,CMS文件分別存在於源代碼管理中的每個Web App。換句話說,每個依賴於CMS的Web應用程序都存在一個「Admin」文件夾。這帶來了明顯的挑戰,因爲CMS的更新必須分發到每個相關站點。我的工作是自動化/簡化流程。

我們目前不執行任何自動構建。我對TFS中源代碼控制分支的知識有限,我不確定它適用於這種情況。確保依賴項目從CMS項目獲得最新程序集和標記的最佳方法是什麼?提前致謝。

聽起來像#2(來自'竹子')是我追求的解決方案。鑑於共享代碼已經存在於每個單獨的項目中,您能否簡要描述一下我將通過「分支/共享」CMS的流程?另外,值得注意的是,我不希望.cs文件傳播到依賴項目,只是標記和程序集。這是否改變了戰略?我應該首先在共享項目上創建一個生成事件,以將必需的文件複製到「發佈」文件夾,然後分發發佈文件夾?

回答

7

這是一對夫婦流行的方式來處理這種情況。

  1. 將共享內容的TFS項目映射到每個應用程序工作區,然後在每個應用程序解決方案中包含共享項目。如果您希望所有團隊/應用程序在構建時立即獲取共享更改,請使用此方法,因爲它們也將獲得最新的共享內容。

  2. 分支/共享共享的東西到每個應用程序源代碼控制樹中。這在TFS中很容易實現。如果每個團隊/應用想要控制何時獲得最新的共享內容,這真的很不錯。這使得團隊能夠做好自己的事情,直到他們準備好整合共享的東西。

我總是比較喜歡#2。但這取決於你需要/想要工作的具體細節。

+0

聽起來像#2是我追求的解決方案。鑑於共享代碼已經存在於每個單獨的項目中,您能否簡要描述一下我將通過「分支/共享」CMS的流程?再次感謝。 – betitall 2009-04-17 20:07:38

0

不確定TFS,但在大多數源代碼管理系統中,您可以在多個位置共享代碼。所有共享副本的更改都會反映出來。在Visual Studio級別,它們將顯示爲獨立的代碼片段。

您的每個Web應用程序(解決方案)都包含一個完全由共享代碼組成的項目。通常,源代碼被共享併成爲構建過程的一部分。您可以共享生成的DLL,但大多數人不會獲取控制DLL。

如果您沒有共享部分的源代碼,可能在GAC中安裝代碼成爲您創建共享部分的唯一選項。

0

我們有一個共享庫,與我們的幾個項目一起使用。然後,我們添加對共享庫的引用,而不是實際的項目...

然後,您必須將引用的路徑添加到build xml,以便您的TFS服務器知道.dll所在的位置。每次爲項目完成新構建時,都會將最新版本的共享複製到項目的容器中。

我們所有的項目,包括共享都有4個分支:開發,集成,分段和生產。因此,當我們需要對共享庫進行更改時,我們會在開發分支中執行此操作,因爲它是獨立的。一旦我們感到高興,我們就會將我們的改變融入整合。我們構建共享集成,然後構建受變更影響的項目。這是我們開始測試其他應用程序以查看我們的更改是否導致了任何錯誤。所以......

  1. 一個地方,使我們的更改共享庫
  2. 合併到一個單一的分支,在每個項目不多個分支。
  3. 共享的使用與添加參考一樣簡單
  4. 可將單個項目和Shared版本從開發推送到生產,而不會影響任何其他項目。共享的.dll版本被複制到項目bin文件夾中。一旦完成了另一個項目的更改,它將通過其分支機構獲取最新版本。