2009-10-22 11 views

Respuesta

20

Si ambos conjuntos tienen un nombre seguro (firmado), el CLR siempre cargará del GAC.

Éstos son los pasos que el motor de ejecución utiliza para resolver referencias de ensamblado (de How the Runtime Locates Assemblies):

  1. determina la versión correcto montaje mediante el examen de archivos de configuración aplicables, incluyendo el fichero de configuración aplicación, editor archivo de política y archivo de configuración de máquina . Si el archivo de configuración se encuentra en una máquina remota , el tiempo de ejecución debe localizar y descargar el archivo de configuración de la aplicación primero.

  2. Comprueba si el nombre del ensamblado se ha vinculado anteriormente y, si es así, usa el ensamblaje previamente cargado. Si una solicitud anterior para cargar el ensamblado falló, la solicitud falla inmediatamente sin intentar cargar la asamblea.

  3. Comprueba la memoria caché de ensamblaje global. Si el ensamblaje se encuentra allí, el tiempo de ejecución usa este ensamblaje.

  4. Sondas para la asamblea (... un poco de material omitido ...)

Como se indica más adelante en el mismo artículo:

No hay ninguna comprobación de versión para los conjuntos sin nombres fuertes, ni el tiempo de ejecución comprueba la memoria caché de ensamblados global para ensamblajes sin nombres fuertes.

Si puede permitirse eliminar la firma del ensamblado local, la aplicación la usará en lugar de la del GAC.

Para más detalle de lo que podría probablemente va a querer acerca de los mecanismos de unión en tiempo de ejecución, vea a Suzanne Cook's blog.

This blog entry from Scott Hanselman también proporciona una gran visión general del proceso de unión.

-1

para implementar correctamente su aplicación .NET Framework, hay que entender cómo el tiempo de ejecución de lenguaje común localiza y se une a los conjuntos que componen su aplicación. De forma predeterminada, el tiempo de ejecución intenta vincularse con la versión exacta de un ensamblaje con el que se creó la aplicación.Este comportamiento predeterminado puede ser anulado por la configuración del archivo de configuración.

Puede ver la información de enlace en el archivo de registro utilizando el Visor de registro de encuadernación (Fuslogvw.exe), que se incluye en el Kit de desarrollo de software de Windows (SDK).

s

1

Si se puede cambiar el número de versión del archivo DLL local, se puede utilizar un redireccionamiento versión DLL utilizando el atributo OldVersion. Puede utilizar un nombre seguro para la asamblea local: Por favor, mire esta página: http://msdn.microsoft.com/en-us/library/7wd6ex19.aspx

También debe tener en cuenta que es posible modificar el número de versión de un ensamblado compilado como se describe aquí: Change Assembly Version in a compiled .NET assembly

Cuestiones relacionadas