大约一年前,我们公司推出了一个相对较大的软件包,主要由两位高级开发人员编写。为了便于演示,我将其称为“项目A”。从那时起,我们一直致力于开发一个新的软件包“项目B”,并在其树中是项目A的一个分支。
项目B引用了项目A,但是现在我们已接近项目B的末尾,我们还需要从A中引用B.因此,在合并A的分支并在与B一起生效之前,我们想在两个项目之间合并核心库。
您对这种情况有什么经验?在这个项目中有哪些最佳实践和经验教训?我们如何才能最好地合并核心库,而对项目A中的其余源代码影响最小?
修改 您对保留项目A命名空间的可行性有何看法,但将代码放在项目B的核心库(最终将成为公司的核心库)中?从那里,只需参考遗留项目中的新公司核心库......
编辑2: 谢谢你的回复。可能需要更多的技术说明。这两个项目都非常密切相关,但每个项目都有自己的核心库.NET类库项目。除此之外,每个库都被其他各种.NET项目引用;内部和外部Web应用程序,表单应用程序等。我的更多问题是源代码应该存在的位置 - 我不相信它们应该保留两个单独的.NET项目,但是单个项目包含两者,最初保留现有的命名空间。随着我们的不断发展,我们将重构,组合命名空间,清除重复的功能等。毫无疑问,现有的库中包含的功能将在即将开展的项目中发挥作用,并且还需要在现有项目之间共享“核心”图书馆。
答案 0 :(得分:1)
Methinks这高度依赖于语言,环境和库类型(动态/静态链接)。你期待什么问题?
答案 1 :(得分:1)
您的问题是否可能在B和A之间进行周期性参考?
或者更多关于A和B.A之间冲突的命名空间?
如果A和B.A在同一个项目中的EXACT相同的命名空间(A)中,我认为你可能会遇到严重的冲突。
一种可能性是为两个库添加名称空间前缀,具体取决于你想要导入哪一个?
即
A变为V1.A而B.A变为V2.A(在项目B下面)
那么如果你想要V1你只需要导入V1命名空间,如果你想要V2你导入V2命名空间并且引用应该排列我认为?
你仍然会遇到一些问题,因为如果你搞乱了A的命名空间,你就会破坏已经引用它作为A而不是V1.A的遗留代码。
老实说,我认为在一个项目中,程序集和命名空间只需要是唯一的。因此,如果你有两个版本的程序集具有相同的命名空间......其中一个必须去。