我已经在我的 web.config 文件中注意到这一部分有一段时间了,我现在正试图弄清楚它的确切目的是什么:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
所以,第一个条目似乎说:
System.Web.Helpers 是具有公钥标记的依赖程序集的名称
31bf3856ad364e35
。将版本 1.0.0.0 到 2.0.0.0 重定向到版本 2.0.0.0。
我最好的猜测是,这意味着在 ASP.NET 运行时上下文中执行的任何代码都依赖于具有指定名称的程序集,该程序集也具有指定范围内的版本,就好像它是使用指定版本编译的一样指定的公钥。
这是否意味着如果我有一个依赖于类库的 Web 项目,并且该类库引用了具有 bindingRedirect 的旧版本的程序集,那么代码将像针对新版本编译一样执行?