.Net程序集绑定重定向与不同的公钥标记

Rus*_*ngs 55 .net asp.net assemblybinding publickeytoken

如果公钥标记在旧版本上为空并且在较新版本上设置,是否可以在引用的程序集的不同版本之间执行程序集绑定重定向?

例如,我有两个组件......

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中工作...

System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
Run Code Online (Sandbox Code Playgroud)

小智 44

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

bindingRedirect标记只有oldVersion和newVersion属性,因此无论如何也无法告诉它"null"版本.

但由于强大的名称机制,背后的真正原因得到了解释


Don*_*kby 7

您可以使用AppDomain.AssemblyResolve事件来执行此操作.我在这个答案中包含了一些示例代码.

  • 可悲的是,似乎公钥标记仍然必须匹配.当我尝试手动加载不同的程序集(使用`bindingRedirect`或没有)时,我得到"找到的程序集的清单定义与程序集引用不匹配". (4认同)