Si tiene el mismo número de versión que la DLL a la que se hace referencia, se utiliza el GAC.
Si incrementa el número de versión, reconstruye el sitio web haciendo referencia al nuevo número de versión, coloca la nueva versión en el directorio/bin y luego se usará esa DLL.
Si no quiere cambiar el número de versión, no tiene suerte.
Cuando .NET carga ensamblajes con nombres fuertes, primero intenta decidir qué número de versión usar. Lo hace a través de la referencia primero, luego busca publisher policies, luego busca binding redirects en el archivo de configuración.
Después de hacer esto, busca el ensamblaje en el GAC, luego en cualquier codebase specified, luego explora varias carpetas del sistema de archivos para la DLL. Si en alguno de esos pasos encuentra el ensamblaje de versión correcto, se detiene.
Si no está cambiando el número de versión de su ensamblaje con nombre seguro, .NET encontrará el original en el GAC y dejará de buscar. Tenga en cuenta que, dado que se detiene cuando se encuentra uno, y como es primero buscar en el GAC, especificar una base de código para su ensamblaje no servirá de nada a menos que también especifique un nuevo número de versión.
¿Entiendo esto correcto? Si la versión 1.0.0.0 está en el GAC pero compilo con la versión 1.0.0.1 y coloco 1.0.0.1 en mi BIN, entonces GAC se ignora y se utiliza BIN.Si elimino el archivo .dll de mi BIN, entonces se utilizará 1.0.0.0 en el GAC, aunque compilé con 1.0.0.1. –
No. Si compila contra un ensamblado de nombre seguro, necesitará el número de versión exacto, a menos que exista una política de editor o redireccionamientos de enlace disponibles. –
Las políticas de editor y los redireccionamientos de enlace permiten la redirección de la versión #, de modo que si su programa está compilado contra 1.0.0.0 y hay una directiva de editor o redireccionamiento de enlace que especifica 1.0.0.1, entonces esa se convierte en la versión que busca. –