gpt4 book ai didi

c# - 冲突的 Newtonsoft.Json nuget 版本。

转载 作者:行者123 更新时间:2023-11-30 14:25:14 30 4
gpt4 key购买 nike

我有一个使用 Newtonsoft.Json 版本 8.0.3 构建的自定义 nuget 包(我们称之为 Custom.SDK)(nuget 包含对 8.0.3 Json dll 的引用)。

我的 project.json 文件最初使用 8.0.3.0,但在将我的项目升级到 .NET Core 1.0 后,我被告知其中一个包需要 Newtonsoft.Json 9.0.0.0 - 因此我更新了我的 project.json引用 9.0.1(Custom.SDK 仍在使用 8.0.3 dll)。

现在,当我尝试构建我的项目时,出现以下错误:

'Microsoft.AspNetCore.Mvc.Formatters.Json' with identity
Microsoft.AspNetCore.Mvc.Formatters.Json, Version=1.0.0.0,
Culture=neutral, PublicKeyToken=adb9793829ddae60' uses
'Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed'
which has a higher version than referenced assembly
'Newtonsoft.Json' with identity 'Newtonsoft.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed'

听起来问题是我的 Custom.SDK nuget 使用的是旧版本的 Newtonsoft.Json,而我的 project.json 引用了新版本(我需要升级到 .NET Core 1.0)。

是否可以在不更新 Custom.SDK 中的 JSON dll 的情况下解决这个问题?

最佳答案

使用旧版本编译的依赖二进制文件的典型情况,当在运行时加载新版本时,您应该能够使用 App.config 中的 BindingRedirect 来解决>,如下:

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

这将确保在运行时请求版本 8.0.0.0 时,它会自动重定向到已加载的 9.0.0.0,请确保版本号和其他信息,如 Public Key token是正确的,请阅读更多关于 Binding Redirect 的信息这里

关于c# - 冲突的 Newtonsoft.Json nuget 版本。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39086654/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com