无法加载文件或程序集“Newtonsoft.Json,版本=3.5.0.0”。

17

我正在使用C# 4.0读取签名请求,以下是我的代码:

FacebookApp fap = new FacebookApp();
fap.AppId = "789485219211963"; // App ID
fap.AppSecret = "365ee9f5823698536767d608cf572a49"; 

string requested_Data = Request.Form["signed_request"];
FacebookSignedRequest fsr = fap.ParseSignedRequest(requested_Data);
IDictionary<string, string> myDic = fsr.Dictionary;

string name = myDic["name"];
string algorithm = myDic["algorithm"];

Response.Write(requested_Data + "<br>" + algorithm + "<br>" + name + "<br>");

但是在下面标记的行,我收到了以下异常:

无法加载文件或程序集 'Newtonsoft.Json, Version=3.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' 或其依赖项之一。所定位的 程序集清单定义与程序集引用不匹配。 (HRESULT 的异常来自: 0x80131040)

我下载了Newtonsoft.Json的release 1而非release 2,但它仍然不能工作。 有人能帮忙解决这个问题吗?如果我的读取已签名请求的方法不正确,请指出正确的方式。

谢谢:


哪一行是高亮显示的?你下载后做了什么? - Colin Mackay
7个回答

18

我猜测你下载的是 Newtonsoft.Json v4.0 而不是 3.5 版本。3.5 版本的最后一个版本是发布版 8。

http://json.codeplex.com/releases/view/50552

我猜想你可以在你的 web.config/app.config 文件中将版本向前调整,以便使用 4.0 而不是 3.5 版本,因为你正在使用的某个库可能是针对 Newtonsoft 的 3.5 版本构建的。


是的,你说得对,现在我使用了来自http://json.codeplex.com/releases/view/50552的Newtonsoft.json 3.5版本,它起作用了。谢谢Jishi。 - Shahid Rasul
4
关于汇编转发配置,供未来参考: http://msdn.microsoft.com/zh-cn/library/7wd6ex19.aspx - Adrian Godong

9

您可以使用包管理器通过其NuGet包“Newtonsoft.Json”更新它。

PM> update-package newtonsoft.json

3
在Visual Studio 2013的包管理器控制台中
PM> Install-Package Newtonsoft.Json

然后重新启动Visual Studio。


2
当我遇到这个问题时,我发现在你的项目/包文件夹中有两个相似的文件夹,一个是版本6.0.5,另一个是5.0.6。
我删除了5.0.6,问题就解决了。

1
我在升级解决方案的所有NuGet包后,我的Xamarin.Forms PCL WinPhone8.1项目遇到了同样的问题。问题出在winPhone8.1项目中的Newtonsoft.Json v9.0.0。
其他所有项目都能正常工作。花了两天时间寻找所有建议,最终通过删除该项目、从我的git上拉取该项目的克隆版本并重新添加到解决方案中来解决了该问题。仍然失败(尽管提交之前的git版本很好)。
删除Newtonsoft的引用,重新安装旧版本8.0.3,然后通过NuGet升级到V9.0.0。
然后从winPhone8.1项目Bin/ARM/Debug、Bin/x86/Debug和Obj/ARM/Debug/MSIL和MDIL目录中删除所有对Newtonsoft的引用。进行构建,成功了。

对我来说非常令人沮丧,但这是唯一有效的解决方案。我过去在NewtonSoft.Json中遇到了版本控制的真正问题,而这种情况似乎多年来并没有得到改善。 - Shredderroy

0

打开程序包管理器控制台并执行以下操作:

update-package newtonsoft.json 

这对我有用。


-1

PM> update-package newtonsoft.json 它可以工作


你能否添加一些细节,使你的回答更有帮助? - Leonardo Alves Machado
1
并非每个人都知道您要告诉他在程序包管理器控制台中执行该语句。 - Manuel Zelenka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接