imagen atributo .net asp.net assemblybinding publickeytoken

.net - atributo - alt title



Enlace de ensamblaje.Net redireccionamiento con tokens de clave pública diferentes (3)

Es posible que pueda utilizar el evento AppDomain.AssemblyResolve para hacerlo. He incluido algunos ejemplos de código en esta respuesta .

¿Es posible realizar una redirección de enlace de ensamblaje entre diferentes versiones de un ensamblado al que se hace referencia si el token de clave pública es nulo en la versión anterior y está configurado en la versión más reciente?

Por ejemplo, tengo dos asambleas ...

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

y

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

En caso de que la siguiente redirección de enlace de ensamblaje funcione en 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>


No, no es posible. Las asambleas deben tener el mismo publicKeyToken.

La etiqueta bindingRedirect solo tiene los atributos oldVersion y newVersion, por lo que no hay manera de decirle acerca de la versión "nula" de todos modos.

Pero la verdadera razón detrás se explica debido al fuerte mecanismo de nombre.


Parece que no se puede utilizar un enlace-redirección, pero en mi caso logré solucionar el problema con diferentes keyKeyTokens modificando el valor de token que se solicita en la DLL de referencia:

Desmonte la dll a IL, cambie la referencia, vuelva a ensamblar (y vuelva a firmar, lo que podría ser un problema si no tiene el archivo de claves).

(Consulte mi comentario sobre al hacer referencia a conjuntos, ¿es posible insistir en un número de versión pero ignorar el publickeytoken? (Es decir, aceptar firmado / sin firmar) )