C# 如何在大型代码库中组织外部库

C# 如何在大型代码库中组织外部库,c#,assemblies,C#,Assemblies,我只是想知道,在一个大团队中使用数十种不同的解决方案时,社区是如何组织.NETDLL库的 我特别好奇的是,人们是否会选择某种“library”文件夹,其中包含所有项目使用的所有外部DLL,以及人们是否会在DLL的新版本发布时对其DLL进行版本化,还是仅仅覆盖DLL,并希望下一次重新编译时的.NET解决方案能够实现这一点 我也不清楚您是否可以简单地将不同版本的DLL放到文件夹中,并让解决方案处理此问题,或者.net是否强制您使用特定版本(注意:我们不需要对任何程序集进行签名)我在我们的存储库中有一

我只是想知道,在一个大团队中使用数十种不同的解决方案时,社区是如何组织.NETDLL库的

我特别好奇的是,人们是否会选择某种“library”文件夹,其中包含所有项目使用的所有外部DLL,以及人们是否会在DLL的新版本发布时对其DLL进行版本化,还是仅仅覆盖DLL,并希望下一次重新编译时的.NET解决方案能够实现这一点


我也不清楚您是否可以简单地将不同版本的DLL放到文件夹中,并让解决方案处理此问题,或者.net是否强制您使用特定版本(注意:我们不需要对任何程序集进行签名)

我在我们的存储库中有一个专门的文件夹,供第三方库和DLL使用,所有项目都可以参考

至于版本控制,我是根据具体情况来做的。对于一些不经常更新的库,或者我不打算在最新版本发布时更新到最新版本的库,我只是将DLL放在那里。
但是,对于经常更新的主要库,我通常采用以下模式:

<LibName>/Current/<LibName>.dll
<LibName>/v1.1/<LibName>.dll
<LibName>/v1.2/<LibName>.dll
/Current/.dll
/v1.1/.dll
/v1.2/.dll
大多数项目只会引用“当前”文件夹中的dll。但是,如果有问题,他们可以引用旧的问题。这里的好处是,如果发现问题,可以很容易地切换引用以查看它是否存在于旧版本中


注意:如果一个项目依赖于另一个项目,那么您需要在两个项目之间使用相同的版本,因此最好尽可能使用最新版本。

当前通常会有一个
Libs
目录,该目录将与解决方案的其余部分一起签入,并对每个项目中的DLL进行相对引用。只要一个新版本有相同的名称,它就会被选中——只要确保解决方案中的所有项目引用相同的路径即可

然而未来,新兴的最佳实践将是用于管理对第三方库的依赖关系。我们现在才开始部署它,它已经非常适合于像Prism这样的外部库,但也允许您为自己的共享库创建中央存储库