2017-06-20 273 views
2

我遇到了一个问题,我收到有关尝试加载旧版本的DLL的错误信息,该DLL甚至不在本机上。绑定重定向不重定向?

无法加载文件或程序集 'Newtonsoft.Json,版本= 6.0.0.0, 文化=中性公钥= 30ad4fe6b2a6aeed' 或它 的一个依赖。找到的程序集的清单定义不符合程序集引用的 。 (异常来自HRESULT:0x80131040)

我已经在webconfig重定向来处理这个:

<dependentAssembly> 
    <assemblyIdentity name="NewtonSoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" /> 
</dependentAssembly> 

有到6.0.0.0构建的解决方案没有提及。也许依赖?如果是这样,我不知道如何让跑步时间告诉我谁是有罪的部分。

为什么这仍然是错误的?

+0

Azure SDK是我运行最频繁的一个dep 6.0.0.0。 – vcsjones

+0

@vcsjones我们根本不使用Azure。 – asawyer

+0

你有另一个可能使用该版本的Newtonsoft.Json的项目吗? – ybrajim

回答

2

原来,答案就在我面前。 assemblyBinding标签具有一个appliedTo属性,该属性指定应根据.Net框架版本重定向哪些版本。

assemblyBinding appliesTo="v2.0.50727" 

出于某种原因,它被设置为2.0 - 应用程序正在运行V4.0所以重定向这里不适用。删除属性可以解决问题。

<runtime> 
    <assemblyBinding> 
     <dependentAssembly> 
      <assemblyIdentity name="NewtonSoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> 
      <bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
</runtime>