首页 > 解决方案 > '无法加载文件或程序集'Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' 或其依赖项之一

问题描述

我们在我们的一个 asp.net Web 表单应用程序中实现了 Azure Keyvault 和 MSAL 身份验证。而 MSAL 在安装所有 owin secirity 包后按预期工作,并且 newtonsoft json 包从 6.0.0.0 升级到 10.0.0 版本。但是在从 keyvault 获取机密时,应用程序遇到以下 newtonsoft.json dll 丢失错误。

System.IO.FileLoadException:'无法加载文件或程序集'Newtonsoft.Json,版本 = 6.0.0.0,文化 = 中性,PublicKeyToken = 30ad4fe6b2a6aeed'或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)'

FusionLog: === 预绑定状态信息 === LOG: DisplayName = Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed (Full-specified) LOG: Appbase = file:///C: /Users/v-tukar/source/repos/DWS-CPM-PLG-ETRAX-CoreCode8/Web/Microsoft.IT.eTRAx.UX/ LOG: Initial PrivatePath = C:\Users\v-tukar\source\repos\DWS -CPM-PLG-ETRAX-CoreCode8\Web\Microsoft.IT.eTRAx.UX\bin 调用程序集:Microsoft.Rest.ClientRuntime.Azure,版本=3.0.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35。

LOG:此绑定在默认加载上下文中开始。日志:使用应用程序配置文件:C:\Users\v-tukar\source\repos\DWS-CPM-PLG-ETRAX-CoreCode8\Web\Microsoft.IT.eTRAx.UX\web.config 日志:使用主机配置文件: C:\Users\v-tukar\Documents\IISExpress\config\aspnet.config LOG:使用来自 C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config 的机器配置文件。日志:策略后参考:Newtonsoft.Json,版本=6.0.0.0,文化=中性,PublicKeyToken=30ad4fe6b2a6aeed 日志:尝试下载新 URL 文件:///C:/Users/v-tukar/AppData/Local/Temp /临时 ASP.NET 文件/vs/27ddedce/76380321/Newtonsoft.Json.DLL。日志:尝试下载新的 URL 文件:///C:/Users/v-tukar/AppData/Local/Temp/Temporary ASP.NET Files/vs/27ddedce/76380321/Newtonsoft.Json/Newtonsoft.Json.DLL。日志:正在尝试下载新的 URL 文件:///C:/Users/v-tukar/source/repos/DWS-CPM-PLG-ETRAX-CoreCode8/Web/Microsoft.IT.eTRAx.UX/bin/Newtonsoft.Json.DLL。警告:比较程序集名称导致不匹配:主要版本错误:无法完成程序集设置(hr = 0x80131040)。探测终止。

注意:1.我们已将所有与 keyvault 相关的 dll 升级到最新版本(Microsoft.Rest.ClientRuntime.Azure 到 Version=3.3.18 和 Microsoft.Rest.ClientRuntime 到 2.3.17) 2.我们可以在 web 中看到升级后的 dll 版本。 config 和 packages.config 文件。我们还检查了项目中是否有任何其他 dll 依赖于 Newtonsoft.Json 6.0.0.0 版本的 dll,但我们找不到。

我们仍然遇到 Newtonsoft.Json dll 6.0.0.0 版本错误。如果有人可以就此提出解决方案,那将非常有帮助

标签: c#asp.netjson.netazure

解决方案


这里的问题是,您Newtonsoft.json在项目中使用了 3 个 Nugets -

  • 此版本 2.3.17

    在此处输入图像描述

  • 此版本 3.3.18

    在此处输入图像描述

  • 版本 4.1.1(我猜,正如你没有提到的那样)

    在此处输入图像描述

AFAIK,对此有两种可能的解决方案:

  1. 将 Microsoft.Rest.ClientRuntime 升级到 2.3.22,将 Microsoft.Rest.ClientRuntime.Azure 升级到 3.3.19。
  2. 将 Newtonsoft.json 的版本更改为<package id="Newtonsoft.Json" version="10.0.1" targetFramework="net472" />in packages.json

推荐阅读