我有一个复杂的库A
,它由几个C#项目组成,产生以下程序集:
- A.Core
- A.Caching
- A.Logging
- A.MongoDb
这个库是我编写的,并且我可以完全访问其源代码。 它依赖于几个NuGet包,假设它们是:
- mongocsharpdriver
- EnterpriseLibrary.Caching
- EnterpriseLibrary.Logging
这些库(MongoDb驱动程序和EntLib)未安装在GAC中。
我还有一个Web项目B
,我想在其中将库A
作为DLL引用使用(不包括在解决方案B
中的项目)。
该Web项目依赖于几个NuGet包,其中包括:
- mongocsharpdriver
- EnterpriseLibrary.Logging
这些软件包在解决方案A
和B
中的版本不匹配,因为它们不是同步开发的。自一年前开发了库A
以来,一直按原样使用。
问题:分发库A
的正确方法是什么?
- 任何解决方案都可以使用它,即使lib
A
的依赖关系未被引用。 - 如果一个解决方案有自己版本的库
A
的依赖项,则它们不会产生冲突。
我的当前方法:
- 从我的解决方案中,我引用四个dll:
A.Core, A.Caching, A.Logging, A.MongoDb
。 - 然后,如果它们不存在,则将其所有NuGet依赖项添加到解决方案中。
- 有时会出现问题,因为解决方案
B
使用mongocsharpdriver版本1.5,而libA
使用版本1.1(版本不太兼容)。
那么,我该怎么做呢? 如何正确处理“引用与引用的引用之间的冲突”?