在.NET中的解决方案之间共享公共库的最佳实践

And*_*rko 7 .net version-control project-management

我们有一组MSVS解决方案(解决方案"A","B","C",......),它们在程序集中共享基本功能,称为"Common.dll".

有3-5个活跃的解决方案(正在开发中),而其他解决方案是被动的,几乎不会被重建.

Common.dll总是在开发中.如何保存我的解决方案代码有多种选择,您会建议什么以及为什么?

一个).将common.dll源代码放到每个解决方案中.优点:它将帮助主动解决方案与common.dll并排增长,而被动解决方案将可编译.缺点:在活动解决方案之间同步活动的common.dll代码很困难

B).将common.dll二进制代码放到每个解决方案中.优点:所有项目都可以编译,而common.dll代码将集中.缺点:很难与common.dll并行增加活动解决方案

C).引用每个项目到最后的common.dll二进制文件看起来像B.但如果common.dll会增长并改变它的接口(有些人可能会说接口应该始终保持不变),它会带来被动解决方案的问题

d).?

先感谢您!

Luc*_*ero 1

我们主要练习类似 B 的东西。

CI 服务器确保公共库始终是最新的(即使它们本身使用其他公共库)。每个使用公共库的解决方案都有一个“Lib”文件夹,我们在其中放置构建工件,但这些工件不受源代码控制(与外部工件相反,例如通过 NuGet 导入的工件)。

因此,在开发时,您不会因为公共库中的重大更改而遇到问题,并且开发人员会选择升级的时间点(但他总是必须在提交到中央存储库之前这样做)。

CI服务器总是会将最新的公共库复制到正在构建的解决方案的“Lib”中,以便集成最新的公共库。如果我们需要使用旧库创建构建(特定的修补程序版本 - 非常罕见),我们始终可以使用具有匹配日期的构建工件。不过,正常的补丁/修复版本通常也会升级到最新的公共库。