2

大约一年前,我们公司推出了一个较大的软件包,主要由两名高级开发人员编写。为了便于演示,我将其称为“项目 A”。从那时起,我们一直在开发一个新的软件包,“项目 B”,在它的树中是项目 A 的一个分支。

项目 B 有对项目 A 的引用,但是现在我们即将结束项目 B,我们还需要从 A 中引用 B。因此,在合并 A 的分支之后,在与 B 上线之前,我们想合并两个项目之间的核心库。

对于这种情况,您有哪些经验?这个项目有哪些最佳实践和经验教训?我们如何才能最好地合并核心库,同时对项目 A 中的其余源代码影响最小?

编辑: 您对保留项目 A 的命名空间但将代码定位在项目 B 的核心库(最终将成为公司的核心库)中的可行性有何看法?从那里,只需在遗留项目中引用新的公司核心库......

编辑2: 感谢您的回复。也许需要更多的技术说明。这两个项目密切相关,但每个项目都有自己的 .NET 类库项目作为核心库。除此之外,每个库都被其他各种 .NET 项目引用;内部和外部 Web 应用程序、表单应用程序等。我的更多问题是源代码应该放在哪里 - 我不认为它们应该保持两个独立的 .NET 项目,但一个项目包含两者,最初保留现有的命名空间. 随着我们继续开发,我们将重构、组合命名空间、清除重复功能等。毫无疑问,两个现有库中包含的功能将在即将到来的项目中有用,并且在现有的两个库之间共享也出现了新的需求“核心”库。

4

2 回答 2

1

我认为这高度依赖于语言、环境和库类型(动态/静态链接)。你期待什么问题?

  • 冲突标识符
  • 重复功能
  • 构建过程的变化
  • 集成/单元测试
于 2009-05-20T21:03:43.043 回答
1

您是否对 B 和 A 之间的循环引用的可能性有疑问?

或者更多关于 A 和 BA 之间冲突命名空间的信息?

如果 A 和 BA 都在同一个项目的完全相同的命名空间 (A) 中,我认为你可能会遇到严重的冲突。

一种可能性是为这两个库添加一个命名空间前缀,并根据您想要的导入那个?

IE

A 变为 V1.A,BA 变为 V2.A(在项目 B 下)

那么如果你想要 V1,你只需导入 V1 命名空间,如果你想要 V2,你导入 V2 命名空间,我认为引用应该对齐?

您仍然会遇到一些问题,因为如果您弄乱了 A 的命名空间,您将破坏任何已经将其引用为 A 而不是 V1.A 的遗留代码。

老实说,我认为在项目中您的程序集和命名空间只需要是唯一的。因此,如果您有两个版本的程序集具有相同的命名空间......其中一个必须去。

于 2009-05-20T22:40:28.293 回答