2013-01-14 149 views
1

我目前正在使用包含所有WebApps,WinServices,WebServices,控制檯應用程序和公共庫(業務實體,自定義控件等)的sln文件的源代碼樹。TFS 2010文件/項目結構

此文件結構是非常平坦,在

+--Solution Folder 
+----Solution File 
+------WebApp1 
+------WcfService1 
+------WinService1 
+------CommonEntities 
+------WebControls1 
+------ThirdPartyAssemblies 

我已經開始工作,爲每個Web應用程序創建單獨的解決方案,WCF服務等。在這樣做,我能看到的常見項目跨這些解決方案。

我對你們的問題是我如何在TFS中構建我的文件系統,所以我可以使用通用項目?

我非常樂意遵循單個TFS項目的方法來定義每個站點/服務的工作項目和報告的面積,但我並不熱衷於爲每個項目分支公共庫。這就是說你們如何克服這些問題?

我知道人們還建議在一個解決方案中使用通用項目,然後在其他解決方案中引用編譯後的二進制文件。我也不太喜歡這種方法。公平地說,如果這些是唯一的選擇,但我渴望看到其他人如何解決這個問題,我會選擇兩個中的一小部分。

回答

2

我不能確切地感受到你的觀點,所以我會試着爲你打開大門,你看看多重解決方案嗎?

enter image description here

更多信息:

Chapter 3 – Structuring Projects and Solutions in Source Control

對於源控制結構也有不同的方法

你看看服務器端結構?

$MyTeamProject1 
    /Main                Can contain solution (.sln) files  
      /Source 
         /MyApp1           Contains MyApp1.sln file 
            /Source        Contain folder for all source 
               /ClassLibrary1   Contains ClassLibrary1.csproj 
               /MyApp1Web    Contains Default.aspx 
            /UnitTests       Container folder for unit tests 
               /ClassLibrary1Tests  Contains test project and code 
               /MyApp1WebTests   Contains test project and code 
         /SharedBinaries         Shared binaries e.g. libraries 
         /SharedSource         Shared source code   
      /Docs              Contains product documentation 
      /Tests              Container for tests 
         /FunctionalTests 
         /PerformanceTests 
         /SecurityTests/

更多信息:

Chapter 4 – Structuring Projects and Solutions in Team Foundation Source Control

3

在M.Radwan的答案構建的項目不考慮CI(持續集成)的建議和門控的基礎之上。我有一個微軟推薦這種方式的問題。 CI和門控版本當前由工作區映射觸發。因此,解決方案文件不應位於Main下的頂部。例如,如果你把所有的解決方案文件了在解決文件夾級別,如果你有獨立的門控構建設立WebApp1,WcfService1,WinService1,普通實體等他們都需要具備的主要解決方案文件夾映射,並且是高效的不需要的文件夾隱藏(額外的工作,這是一個痛苦的維護),當開發人員檢查代碼到任何這些文件夾,可以說WebApp1,他們將被提供一個對話框來選擇運行的門控構建。由於它們都映射相同的結構,所以這個對話框將具有所有這些門控構建,並且開發人員可以選擇WinService1,因爲WebApp1中沒有任何代碼在該構建中,所以它們的代碼不可能失敗。所以沒有編譯的潛在代碼剛剛通過門控編譯系統。

原因及其對CI並不好,因爲如果你有CI集並且在任何子文件夾的更改一個文件時,會觸發CI構建爲每次構建設置與主映射到它。你應該做的是把每個解決方案文件放在它自己的目錄中,並附上代碼。因此,在他的示例中,MyApp1的解決方案文件應位於MyApp1文件夾中。這是你可以擁有非常小的包含構建,只有它自己的代碼才能觸發。

+0

不錯的補充...這會有幫助嗎? http://stackoverflow.com/a/9260399/48953 – Jowen

+0

只要您不使用在項目級別不可用的任何解決方案級別的宏,它將會有所幫助。對於大多數地方來說,重構到可行狀態將會太昂貴 – Alex