Dot-Net

具有不同公鑰令牌的 .Net 程序集綁定重定向

  • February 3, 2010

如果舊版本上的公鑰標記為空並在新版本上設置,是否可以在引用程序集的不同版本之間執行程序集綁定重定向?

例如,我有兩個程序集…

System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35

如果以下程序集綁定重定向在 Asp.Net web.config 中工作…

<runtime>
 <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
   <dependentAssembly>
     <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
     <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0"/>
   </dependentAssembly>
 </assemblyBinding>
</runtime>

不,這是不可能的。程序集需要具有相同的 publicKeyToken。

bindingRedirect 標記只有 oldVersion 和 newVersion 屬性,所以無論如何都無法告訴它“null”版本。

但背後的真正原因是由於強名稱機制

引用自:https://stackoverflow.com/questions/2191296