【问题标题】:dll dependency problem - 3rd party package(Nuget) overrides the other in the output folder System.Runtime.CompilerServices.Unsafe dlldll 依赖问题 - 第 3 方包(Nuget)覆盖输出文件夹 System.Runtime.CompilerServices.Unsafe dll 中的其他包
【发布时间】:2021-05-27 14:39:53
【问题描述】:

目标:控制输出 dll 而不保存或将工件添加到存储库。

主要问题是我的解决方案中有两个第 3 方包(.net 框架 4.6.1): rabbitMQClient V6.0.0 使用 - system.memory (>= 4.5.4) -> System.Runtime.CompilerServices.Unsafe (>= 4.5.3)

使用 System.Runtime.CompilerServices.Unsafe (>= 5.0.0) 的 MongoBson v2.12.1(例如)

每个包都提供以下具有不同版本的 System.Runtime.CompilerServices.Unsafe.dll,并且由于它们是不同的项目,因此每个包都覆盖输出目录中的另一个。

我尝试了什么: 如果我尝试降级“CompilerServices.Unsafe”,mongoDb 连接由于异常而失败 - 'MongoDB.Driver.Core.Misc.DnsClientWrapper... 的类型初始化程序...”

如果我升级,那么兔子将无法连接 - 内部异常:无法加载文件或程序集。

我尝试使用重定向,但它似乎不起作用(如果是新版本的 dll,rabbitMq 异常)

work 解决方案的唯一可能性是,如果我在所有项目中将本地副本设置为 false,但使用旧版本 的项目除外,因为在 NuGet更新它将设置为 true 我需要更稳定的解决方案。

【问题讨论】:

    标签: c# visual-studio nuget-package dll-dependency


    【解决方案1】:

    降级不是一个可行的选择;升级通常应该可以工作但您需要修复程序集绑定System.Runtime.CompilerServices.Unsafe 是众所周知的一大痛点,因为自动绑定生成代码不适合它。 Nick 对如何做到这一点有很好的指导here - 主要配置示例恰好使用System.Runtime.CompilerServices.Unsafe,所以它应该只是添加当前版本号的情况。

    这是在 .NET Core / .NET 5 及更高版本中变得更加容易的众多事情之一。

    【讨论】:

      猜你喜欢
      • 2011-01-13
      • 1970-01-01
      • 2017-09-01
      • 2010-10-21
      • 1970-01-01
      • 1970-01-01
      • 2018-12-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多