我們也有類似的問題,並正在接近它很像@Toby艾倫在他的回答中提到的解決方案子目錄,通過客戶端規格。然而,隨着時間的推移,這變得非常痛苦(隨着客戶端規格變得越來越複雜,建立一個新的團隊成員變得越來越困難;自動化也變得更加複雜,因爲事情是......「不斷變化的」:-))。
最終,我們演變爲使用目錄結構和分支的戰略。目錄結構如下:
//depot
/products
/(product_name)
/doc
/lib
/(3rd_party_libname)
(DLLs)
/(another_3rd_party_libname)
(DLLs)
/src
/Project1
(files, csproj, vbproj, etc)
/Project2
(files, csproj, vbproj, etc)
/Project3
(files, csproj, vbproj, etc)
Solution1.sln (includes src/Project1)
Solution2.sln (includes src/Project1, src/Project2)
Solution3.sln (includes src/Project1, src/Project3)
/(another_product_name)
/doc
/lib
/src
(solutions)
/shared
/(shared_lib_name)
/doc
/lib
/src
(solutions)
/(another_shared_lib_name)
/doc
/lib
/src
(solutions)
請注意,在整個結構(doc/lib/src/solutions)中重複使用相同的結構。 Lib包含「外部」庫 - 包含在項目引用中的第三方庫。 Src包含屬於特定產品一部分的所有項目的平面清單。解決方案然後用於以多種方式「合併」項目。我認爲src目錄是一個容器,裏面有「可用的東西」,然後解決方案從這個容器中挑選併合並項目(根據需要)。
多個產品共享的庫進入共享目錄。一旦進入共享目錄,它們將被視爲與產品無關 - 它們有自己的發佈週期,並且不會以源代碼的形式加入產品。通過將共享庫發佈程序集/程序集分支到產品的lib目錄 - >從產品角度看,共享庫被拉入產品中,第三方庫和共享庫沒有區別。這允許我們控制什麼產品使用什麼版本的共享庫(當產品需要新功能時,它必須明確地分支到更新版本的共享庫,就像它將包含第三方庫的新版本一樣,與所有優點和缺點一起去)。
總之,我們的結構具有共享庫的兩個「類型」的概念:
- 項目本地的產品,通過多種解決方案(包括在在src目錄下,多個解決方案項目的平面列表使用可以引用它們)由多個產品使用
- 項目(添加到共享目錄下,與版本的第三方庫處理從產品獨立的)
我想這個......我進入我的P4信息重新綁定項目,之後我得到一個彈出窗口說明e ver有用的「未指定的錯誤」。綁定永遠不需要... 另外...它似乎並沒有像這個解決方案的規模很好......每個開發人員都必須通過這種儀式爲每個解決方案? – 2009-01-20 20:34:22