【发布时间】:2012-02-28 10:44:05
【问题描述】:
这是SVN结构:
/trunk
+ ProjectA
+ ProjectB
+ Common
+ ProjectCore
+ References
ProjectA 和ProjectB 将交付最终产品,并且每个产品都可以有自己的发布生命周期。这两个项目都使用来自ProjectCore 的相同公共库。
ProjectCore 也将有自己的发布生命周期。
在ProjectA 和ProjectB 中,我们要引用ProjectCore 的库。 ProjectCore-libs 在ProjectCore 的成功发布生命周期后被添加到SVN。 ProjectCore-libs 被添加到 References 文件夹中。
通过这样做,我们发布(冻结)我们的 ProjectCore 构建,作为经过全面测试的组件。所以我们有多个 Core-lib 版本:
- RLS_Core_1.00
- RLS_Core_1.01
- RLS_Core_2.00
- RLS_Core_3.00
由于我们将发布的库(dll)添加到 SVN,ProjectA 和 ProjectB 可以引用它们。
最好的方法是什么?
方法 1
在References 下名为RLS_Core_X_XX 的新文件夹中将ProjectCore-libs 添加到SVN。
在ProjectA和ProjectB的解决方案中,我们添加了对这个唯一文件夹的引用:./trunk/Common/References/RLS_Core_X_XX。
方法 2
将ProjectCore-libs 添加到同一个文件夹References/Core 下的SVN。如果其中有一个“旧”版本,它将是一个提交。
在ProjectA和ProjectB的解决方案中,我们添加了对:./trunk/Common/References/Core的引用。我们使用 SVN 外部属性来定义必须为 ProjectA 和 ProjectB 使用核心库的哪个版本。
在这两种方法中,开发人员明确需要决定他想在他的项目解决方案中使用哪个 Core-libs 版本。规则是保持相同的核心库,除非您因为缺少功能而必须升级。 方法一:在项目解决方案中编辑。 方法 2:在外部属性中进行编辑。
首选哪种方法?
【问题讨论】:
-
所有项目都存在于同一个解决方案中?还是分开?
-
这看起来确实像是 DVCS 可能有用的情况。
-
所有单独的解决方案。
标签: c# .net reference svn-externals