找不到方法:' Void Newtonsoft.Json.Serialization.DefaultContractResolver.set_IgnoreSerializableAttribute(Boolean)'

时间:2014-06-06 16:56:45

标签: c# asp.net-mvc xamarin

我有一个ASP.net MVC应用程序正在使用由xamarin应用程序共享的可移植类库。当我的Web应用程序立即启动时,它会抛出此错误:

 Method not found: 'Void Newtonsoft.Json.Serialization.DefaultContractResolver.set_IgnoreSerializableAttribute(Boolean)'.

我正在使用Structure Map MVC nuget包,它在我引用PCL库之前工作正常。

这行代码出错:

GlobalConfiguration.Configuration.DependencyResolver = new StructureMapDependencyResolver(container);

我认为它与PCL类和MVC有关,它们都引用了JSON.net。有想法该怎么解决这个吗?我最终重建了我的机器,以确保只有这个版本在GAC中,而不是在其他地方。

任何想法

2 个答案:

答案 0 :(得分:33)

在运行Scott Allen关于MVC4基础知识的伟大的Pluralsight课程的练习文件时,我遇到了同样的问题。使用预发布开关更新Newtonsoft.Json对我不起作用。您必须重新安装WebApi包。在程序包管理器控制台中使用以下命令:

uninstall-package Microsoft.AspNet.WebApi
uninstall-package Microsoft.AspNet.WebApi.webhost
uninstall-package Microsoft.AspNet.WebApi.core
uninstall-package Microsoft.AspNet.WebApi.Client
uninstall-package Newtonsoft.Json

install-package Microsoft.AspNet.WebApi

我首先想到,卸载Microsoft.AspNet.WebApi也会负责卸载webhost,核心和客户端 - 但这不起作用。然后,重新安装Microsoft.AspNet.WebApi,然后提供正确版本的Newtonsoft.Json作为依赖程序集。

之后它完美无缺。

希望这有帮助。

答案 1 :(得分:8)

我有同样的问题,最后通过运行

解决了
Update-Package Newtonsoft.Json –IncludePrerelease
在程序包管理器控制台中

我发现我的所有项目都在最新版本上,但在解决了Clean / ReBuild问题之后。