En realidad, hay dos situaciones aquí: usar nombres fuertes/GAC, o no usar nombres fuertes.
Si usa nombres fuertes e instala los componentes en el GAC, entonces .Net querrá usar la versión del componente al que el cliente hacía referencia cuando se compiló. Por lo tanto, en su ejemplo, sería bastante posible que Project hiciera referencia a la base de datos V2, mientras que Logging hizo referencia a la base de datos V1, porque las DLL se pueden almacenar en paralelo en el GAC. Por lo tanto, si realmente desea que Logging use V2 en lugar de V1, deberá modificar los archivos de configuración para decir que "una referencia a V1 debe apuntar a V2". Hay diferentes lugares para hacer esto: archivo de aplicación, archivo de máquina, etc.
Si no está usando nombres fuertes, entonces.Net usará de manera predeterminada la versión de la DLL que está en la misma carpeta que el cliente. Supongamos que despliega Project, CommonControls y Logging en la misma carpeta que la base de datos V2. Entonces, incluso si el registro fue construido contra la base de datos V1, intentará usar el componente en la misma carpeta, es decir, la base de datos V2. Siempre que V2 pueda proporcionar las mismas clases y métodos públicos que Logging desea utilizar, funcionará correctamente.
En mi entorno, donde todas nuestras aplicaciones son internas, no utilizamos el GAC. Simplemente implementamos todos los archivos que la aplicación necesita en una sola carpeta. Cuando tiene muchos componentes comunes, sería una pesadilla mantener sincronizados los archivos de configuración.
Esto es todo muy diferente de COM, donde todas las aplicaciones recogieron la copia registrada actualmente de la DLL (suponiendo que V1 y V2 eran compatibles con binarios).
Gracias por el enlace AssemblyBinding pero no puedo encontrar esta propiedad de versión específica en vs2008 para un proyecto de sitio web? – alexmac
Ah la propiedad de versión específica es proyectos de clase y proyectos de aplicaciones web pero no proyectos de sitio web – alexmac
Para un enfoque programático, ' False SpecificVersion>' puede agregarse a cada referencia en el proyecto donde desea desacoplar los metadatos de la versión . –