2009-05-20 71 views
2

大约一年前,我们公司推出了一个相对较大的软件包,主要由两位高级开发人员编写。为了便于演示,我将其称为“项目A”。从那以后,我们一直在研究一个新的软件包“项目B”,并且在它的树中是项目A的分支。合并核心库

项目B对项目A有参考,但现在我们已经接近尾声我们还需要从A中引用B,因此,在合并A的分支和B之前,我们想要在两个项目之间合并核心库。

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

编辑: 你对保留项目A的命名空间,但定位于B项目的核心库中的代码(这将最终成为公司的核心库)的可行性意见?从那里,只需参考遗留项目中的新公司核心库...

编辑2: 感谢您的答复。也许更多的技术澄清是为了。这两个项目都非常密切相关,但每个项目都有自己的.NET类库项目,用于核心库。除此之外,每个库都被其他各种.NET项目引用;内部和外部Web应用程序,Forms应用程序等等。我的问题更多的是源代码应该存在的地方 - 我不相信它们应该保留两个独立的.NET项目,但是一个项目包含两个,最初保留现有的命名空间。随着我们的不断发展,我们将重构,结合命名空间,清除重复功能等。毫无疑问,现有库中的功能在即将到来的项目中很有用,而且现在也需要共享“核心”库。

回答

1

是您的问题,B和A之间的循环引用的可能性?

还有更多关于A和B.A之间冲突的命名空间?

如果A和B.A在同一个项目中的EXACT相同名称空间(A)中,我认为您可能会遇到严重冲突。

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

A成为V1.A和BA变成V2.A(B项目下)

那么接下来,如果你想V1您刚才导入V1命名空间,如果你想V2导入V2命名空间和参考应该排队我想?

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

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

+0

是的,循环引用是最初的关注点。尽管这些项目是分开处理的,但它们非常相关,必须紧密结合。我相信名称空间中实际上会有最小的重叠,而且更多的前缀肯定会成为答案。 – Aaron 2009-05-20 23:50:22

1

这种情况高度依赖于语言,环境和库类型(动态/静态链接)。你期望什么问题?

  • 碰撞标识符
  • 重复功能
  • 更改构建过程
  • 集成/单元测试