无法加载文件或程序集Newtonsoft.json.dll

“无法加载文件或程序集’Newtonsoft.Json,Version = 4.0.3.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed’或其依赖项之一。 定位的程序集的清单定义与程序集引用不匹配。 (HRESULTexception:0x80131040)“。

发布到twitter需要’NewtonsoftJson.dll’程序集。使用的版本是4.0.3.0。

并且相同的程序集(但是diff版本4.0.0.0)被用作facebook C#api(dll)的依赖程序集。 但是,上述程序集(4.0.3.0)对两种情况都不起作用(即发布到twitter和登录facebook)。 为了解决这个问题,创建了一个单独的项目,用于发布到twitter并单独引用程序集(4.0.3.0)(在twitter发布的项目中)。另外一个版本(4.0.0.0)作为参考添加在facebook的主项目中但仍然是错误来了。如果Twitter项目被禁用并运行,那么Facebook登录工作正常和副维拉。

我做了很多研究并尝试了以下方法。

删除临时asp.net文件清理解决方案重启计算机

甚至试图从gac卸载程序集(但它没有在那里注册)。

请帮助我,因为它无法正常工作。 谢谢,S

目前尚不清楚项目的关系是什么,或者何时出现这种错误,但这是一个猜测。

你有3个项目的facebook项目(参考4.0.0.0版本),twitter项目(参考4.0.3.0版本),以及一个主要项目,它们都是这两个项目的参考。 您可以构建此解决方案,但在运行程序集时,绑定将失败。 为什么? 因为默认行为是在运行之前在本地复制程序集。 会发生的是第一个将副本构建到bin(比如twitter)的项目,然后第二个项目构建(facebook),然后是main。 但是,在此结束时,4.0.0.0版本是坐在bin文件夹中。 当您运行时,只要您从twitter调用某些尝试使用问题程序集的内容,绑定就会失败,因为它可以访问4.0.3.0版本的程序集。

有几种方法可以解决这个问题。 一个是在GAC中注册两个程序集。 如果这不可行,那么请查看配置文件中的程序集绑定重定向 。 另一种方法是注册AssemblyResolve事件并以编程方式加载程序集。

将以下内容添加到app.config文件中:

        

标记内

在所有项目中安装Newtonsoft软件包。

 Install-Package Newtonsoft.Json -Version 8.0.3