背景:
项目为asp.net mvc项目,使用的是.net framework 4.0。
起因:
由于项目要加入消息推送,因此引入极光推送,在项目内加入cn.jpush.api.dll。
问题:
消息推送代码加入之后,编译通过,运行时报错【无法找到Newtonsoft.Json.dll 9.0.0】。
此时项目内已经在使用Newtonsoft.Json.dll v4.5.0版本。
解决方法:
1.于是尝试删除Newtonsoft.Json.dll v4.5.0版本的引用,加入Newtonsoft.Json.dll 9.0.0版本引用。
并且修改nuget的package.config中关于Newtonsoft.Json.dll的版本信息(nuget的文档参考:https://docs.microsoft.com/en-us/nuget/)。
这时候,消息推送代码可以运行了
2.但是问题没有解决,系统启动的时候,报错。
原来自定义的AreaRegistration的RegisterArea方法里面,执行GlobalConfiguration.Configuration.Routes.MapHttpRoute报错,找不到Newtonsoft.Json.dll v4.5.0版本。
.net framework默认使用的是Newtonsoft.Json.dll v4.5.0版本,按照vs编译提示,在Web.config内加入强制版本信息后,问题解决。
在runtime节点加入如下信息,问题解决:
1 <assemblyBinding> 2 <dependentAssembly> 3 <assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" /> 4 <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" /> 5 </dependentAssembly> 6 </assemblyBinding>