Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从同时使用某些包的项目中引用使用NuGet包的程序集_C#_.net_Assemblies_Nuget_.net Assembly - Fatal编程技术网

C# 从同时使用某些包的项目中引用使用NuGet包的程序集

C# 从同时使用某些包的项目中引用使用NuGet包的程序集,c#,.net,assemblies,nuget,.net-assembly,C#,.net,Assemblies,Nuget,.net Assembly,我有一个复杂的库a,它由几个c#项目组成,生成以下程序集: A.核心 A.缓存 A.伐木 蒙哥达 这个库是我写的,我可以完全访问它的源代码。 这取决于几个NuGet软件包,假设它们是: 蒙哥卡司机 企业图书馆 企业图书馆 GAC中未安装这些库(MongoDb驱动程序和EntLib) 我还有一个web项目B,我想在其中使用库a作为DLL的引用(不包括解决方案B中的项目)。 web项目依赖于几个NuGet软件包,其中包括: 蒙哥卡司机 企业图书馆 解决方案A和B中这些软件包的版本不匹配,

我有一个复杂的库
a
,它由几个c#项目组成,生成以下程序集:

  • A.核心
  • A.缓存
  • A.伐木
  • 蒙哥达
这个库是我写的,我可以完全访问它的源代码。 这取决于几个NuGet软件包,假设它们是:

  • 蒙哥卡司机
  • 企业图书馆
  • 企业图书馆
GAC中未安装这些库(MongoDb驱动程序和EntLib)

我还有一个web项目
B
,我想在其中使用库
a
作为DLL的引用(不包括解决方案
B
中的项目)。 web项目依赖于几个NuGet软件包,其中包括:

  • 蒙哥卡司机
  • 企业图书馆
解决方案
A
B
中这些软件包的版本不匹配,因为它们不是同步开发的。图书馆
A
是一年前开发的,从那时起就按原样使用

问题:分发库
A
的正确方式是什么

  • 即使没有引用lib
    A
    依赖项,任何解决方案都可以使用它
  • 如果解决方案有自己版本的lib
    a
    依赖项,则它们不会冲突
  • 我当前的方法:

  • 在我的解决方案中,我引用了四个DLL:
    A.Core、A.Caching、A.Logging、A.MongoDb
  • 然后我将其所有NuGet依赖项添加到解决方案中,如果它们不存在的话
  • 它有时会中断,因为解决方案
    B
    使用的是mongocsharpdriver版本1.5,而lib
    A
    使用的是版本1.1(版本不太兼容)
  • 那么,我该怎么办?
    处理“引用与引用的引用”冲突的正确方法是什么?

    管理共享引用的最佳方法是为库A定义任何依赖项(包括版本),其中定义了库A依赖的依赖项。如果不想将库A发布到公共NuGet提要,可以


    NuGet有一些工具将尝试查找与项目及其依赖项兼容的依赖项版本。不幸的是,这仍然不能解决上面第3点中的问题,您的解决方案及其依赖库使用相同外部依赖项的互不兼容版本。在这种情况下,您只需重新处理解决方案B或库A,以便它们使用相同版本的mongocsharpdriver。

    创建我自己的软件包是一个我不知道的好选择。我相信这是在这里能做的最好的事情。非常感谢。