我已经在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是具有public的依赖程序集的名称
31bf3856ad364e35
的关键标记。通过重定向版本1.0.0.0 2.0.0.0到版本2.0.0.0。
我最好的猜测是,它意味着在ASP.NET运行时上下文中执行的任何代码依赖于具有指定名称的程序集,该程序集也具有指定范围内的版本,就好像它是使用指定的编译一样执行具有指定公钥的版本。
这是否意味着如果我有一个依赖于类库的Web项目,并且该类库引用了具有aa bindingRedirect的旧版程序集,则代码将执行,就像它是针对较新版本编译的一样版本
答案 0 :(得分:33)
这是否意味着我有一个依赖于类库的Web项目 并且该类库引用了旧版本的 具有bindingRedirect的程序集,代码将执行为 如果它是针对较新版本编译的?
你说得对(我只会说“......代码将执行为 如果它引用了较新的版本“),请参阅http://msdn.microsoft.com/en-us/library/7wd6ex19%28v=vs.110%29.aspx
“针对特定内容构建.NET Framework应用程序时 应用程序使用该版本的强名称程序集的版本 在运行时的程序集。但是,有时你可能想要 应用程序针对较新版本的程序集运行。“