我已升级从 Visual Studio 2012 开始的 MVC 4 和 Web API 项目以使用 Web API 2(NuGet 包 5.0+)。
我添加了程序集清单以重定向到较新的库,如下所示:
<dependentAssembly>
<assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
这些包被设置为在构建时复制到本地 bin 目录,并且我已经验证了在本地计算机和我们用于测试正确程序集的远程 Web 服务器上的 bin/ 文件夹中。远程计算机上的 GAC 中不存在 Web API 库的副本。
然而,System.Net.Http.Formatting 仍然声称在向应用程序发出请求时它没有找到正确的版本。
Could not load file or assembly System.Net.Http.Formatting, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 or one of its dependencies. The located assembly's manifest definition does not match the assembly reference.
谁能解释为什么由于明显不匹配而仍然存在程序集绑定问题?