我有一个复杂的库A
,其中包含多个生成以下程序集的 c# 项目:
- 核心
- A.缓存
- A.记录
- A.MongoDb
这个库是我写的,我可以完全访问它的源代码。它取决于几个 NuGet 包,假设它们是:
- mongocsharpdriver
- EnterpriseLibrary.缓存
- EnterpriseLibrary.Logging
这些库(MongoDb 驱动程序和 EntLib)未安装在 GAC 中。
我还有一个 Web 项目B
,我想将A
其中的库用作对 DLL 的引用(不包括解决方案中的项目B
)。Web 项目依赖于几个 NuGet 包,其中包括:
- mongocsharpdriver
- EnterpriseLibrary.Logging
这些软件包在解决方案中的版本A
不B
匹配,因为它们不是同步开发的。图书馆A
是在一年前开发的,从那时起就按原样使用。
问题:分发库的正确方法是什么,A
以便:
- 即使
A
未引用 lib 依赖项,任何解决方案都可以使用它。 - 如果一个解决方案有自己的 lib
A
依赖版本,它们不会冲突。
我目前的做法:
- 从我的解决方案中,我引用了四个 dll
A.Core, A.Caching, A.Logging, A.MongoDb
:. - 然后,如果它们不存在,我将其所有 NuGet 依赖项添加到解决方案中。
- 它有时会中断,因为解决方案
B
使用 mongocsharpdriver 1.5 版,而 libA
使用 1.1 版(版本不兼容)。
那么,我该怎么办?处理“引用与引用的引用”冲突的正确方法是什么?