关于.net程序集引用不匹配的问题

今天启动asp.net mvc 程序,其中也用到了web api ,autofac等,为了版本兼容性问题,将mvc和 web api 的版本控制到5.2.0.0,Newtonsoft.Json 的版本是6.0.0.0,但结果还是报错了

未能加载文件或程序集“Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)

日志信息: 调用程序集: System.Net.Http.Formatting, Version=5.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35。

用.net reflector查看该dll确实是依赖Newtonsoft.Json, Version=4.5.0.0

通过找到该dll的路径发现是Microsoft.AspNet.WebApi.Client包的,于是


查看了Microsoft.AspNet.WebApi.Client 5.2.0的nuget详细信息,依赖项的版本是 Newtonsoft.Json (>= 4.5.11) ,按照信息是可以的,但是怎么还报错了?

 

后来百度了一下:让.NET程序兼容不同版本的Dll文件

 

结果找到如下解决方法:在webconfig的runtime->assemblyBing节点下添加

<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="4.5.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>

结果运行成功

ps:用此方法的前提是两个版本的dll的publicKeyToken要一致,查看publickeytoken可以打开SDK命令提示,输入命令:sn -T dll所在路径

 

网上也找了一下同时存在两个版本的解决方法,留作后续研究。

http://www.cnblogs.com/EugeneMay/p/4249709.html

http://stackoverflow.com/questions/2460542/using-different-versions-of-the-same-assembly-in-the-same-folder

 

转载于:https://www.cnblogs.com/ldybyz/p/6805189.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值