我们也有类似的问题,并正在接近它很像@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