绑定重定向不重定向?

asa*_*yer 5 .net c# asp.net json.net

我遇到了一个问题,即在尝试加载旧版本的 dll 时出现错误,而该旧版本甚至不再存在于计算机上。

无法加载文件或程序集“Newtonsoft.Json,Version=6.0.0.0,Culture=neutral,PublicKeyToken=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>
Run Code Online (Sandbox Code Playgroud)

解决方案中没有引用 6.0.0.0 版本。也许是一种依赖?如果是这样,我不知道如何让运行时间告诉我谁是有罪的部分。

为什么还是出现这个故障呢?

asa*_*yer 6

原来答案就在我眼前。assemblyBinding 标记具有applyTo 属性,该属性指定每个.Net 框架版本应重定向哪些版本。

assemblyBinding appliesTo="v2.0.50727"
Run Code Online (Sandbox Code Playgroud)

由于某种原因,它被设置为 v2.0 - 应用程序正在运行 v4.0,因此重定向不适用。删除该属性可以解决该问题。

assemblyBinding appliesTo="v2.0.50727"
Run Code Online (Sandbox Code Playgroud)