【问题标题】:Library trying to load wrong version of assembly库试图加载错误版本的程序集
【发布时间】:2020-10-23 00:36:31
【问题描述】:

我有一个使用“RethinkDb.Driver”库的 .NET Standard 项目,但是当我启动项目时出现以下错误

Could not load file or assembly 'Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies

但是,我的项目已经使用 Newtonsoft.Json 12.0.3。 但是,我无法返回 10.0.0 版本,因为我还在使用另一个需要最新版本的库。
我检查了我的 .csproj,PackageReference 在这里,指向版本 12.0.3
我也已经尝试过清理 NuGet 缓存之类的方法,但没有解决任何问题。

【问题讨论】:

标签: c# dependencies version .net-standard


【解决方案1】:

你必须使用assembly redirect

你必须把它放在你的配置文件中。 在库和可执行项目中为 app.config,如果是 Web 项目,则为 web.config

这是 dotnet 将这种依赖关系解析为 newVersion 的指令

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/>
            <bindingRedirect oldVersion="0.0.0.0-12.0.3.0" newVersion="12.0.3.0"/>
        </dependentAssembly>
    </assemblyBinding>
</runtime>

【讨论】:

  • 这样做时我有同样的错误,但现在版本为 12.0.3.0
  • 尝试将12.0.0.0放入新版本
  • 我还想问你为什么将 0.0.0.0-12.0.3.0 放在“oldVersion”中,因为 RethinDb.Driver 尝试使用的是 10.0.0.0?
  • 这是安全的。确保所有版本都只指向一个版本
猜你喜欢
  • 1970-01-01
  • 2023-03-21
  • 2014-10-10
  • 1970-01-01
  • 2021-07-28
  • 2014-07-27
  • 2015-09-01
  • 2016-04-18
  • 2011-03-13
相关资源
最近更新 更多