为什么ASP.NET中需要绑定重定向?

介绍

今天我更新了我的ASP.NET MVC应用程序,我遇到了以下错误(在德语 – 抱歉):

Die Datei oder Assembly “WebGrease, Version=1.5.1.25624, Culture=neutral, PublicKeyToken=31bf3856ad364e35” oder eine Abhängigkeit davon wurde nicht gefunden. Die gefundene Manifestdefinition der Assembly stimmt nicht mit dem Assemblyverweis überein. (Ausnahme von HRESULT: 0x80131040)

(它说无法找到程序集“WebGrease,版本1.5.1.25624”)

程序集System.Web.Optimization,Version = 1.1.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35尝试加载WebGrease程序集并失败.

我知道可以通过在web.config中添加绑定重定向来轻松绕过这个问题(因为我更新了WebGrease):

  <dependentAssembly>
    <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.6.5135.21930" />
  </dependentAssembly>

进一步问题

很高兴知道为什么需要这个以及如何创建* .Optimization程序集. System.Web.Optimization 1.1.3程序集依赖于WebGrease 1.5.2并且“只需使用其他版本的WebGrease”-redirect可能会导致方法调用,新版本中不再存在这种方法调用,不是吗?

* .Optimization的开发人员是否在他们的Project中包含对WebGrease 1.5.2的引用,在构建和创建NuGet包之后删除了WebGrease程序集?或者他们是否在代码中加载程序集?

任何有关如何工作的解释都非常感谢.谢谢.

最佳答案
Taken from MSDN doc关于此事:

You can manually edit the app configuration file to resolve assembly
issues. For example, if a vendor might release a newer version of an
assembly that your app uses without supplying a publisher policy,
because they do not guarantee backward compatibility, you can direct
your app to use the newer version of the assembly by putting assembly
binding information in your app’s configuration file.

我很久以前也遇到过同样的问题…无论如何我认为这是NuGet包的问题,​​根据CodePlex的work item.

点赞