【发布时间】:2023-03-26 15:16:01
【问题描述】:
我有一个复杂的库 A,其中包含多个生成以下程序集的 c# 项目:
- A.Core
- A.缓存
- A.记录
- 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依赖项,任何解决方案都可以使用它。 - 如果解决方案有自己版本的 lib
A依赖项,它们不会冲突。
我目前的做法:
- 在我的解决方案中,我引用了四个 dll:
A.Core, A.Caching, A.Logging, A.MongoDb。 - 然后,如果它们不存在,我会将其所有 NuGet 依赖项添加到解决方案中。
- 它有时会中断,因为解决方案
B使用 mongocsharpdriver 1.5 版,而 libA使用 1.1 版(版本不兼容)。
那么,我该怎么办? 处理“引用与引用的引用”冲突的正确方法是什么?
【问题讨论】:
标签: c# .net assemblies nuget .net-assembly