Pregunta

Mantener las cosas simples, suponga que no sean DLL en la carpeta local, o los archivos de configuración involucrados, o las políticas de Publisher, o la resolución personalizada. El único lugar a las que se hace referencia DLLs está en el GAC.

¿Cómo decide la fusión a qué versión de las DLL en el GAC para (todas las demás cosas iguales), ¿cuál es el orden de prioridad?

Por ejemplo, si en mi proyecto, he referenciado una DLL de la versión 10.5.0.0. ¿Solicitaría la DLL de la versión 10.5.0.0 o 10.5.1.0? Alternativamente, si solo tuviera la versión 10.4.0.0 en el GAC, ¿funcionaría o arrojaría un error? ¿Estas reglas cambian dependiendo de si es la parte mayor / menor / de compilación / revisión que cambia?

¿Cómo difiere esto si la referencia de la referencia del proyecto "versión específica" se establece en verdadero o falso?

¿Y cómo difiere esto si la referencia es una referencia de DLL o una referencia del proyecto?

Supongo que hay un sitio web de MSDN en algún lugar declarando cómo funciona esto, pero parece que no puedo encontrarlo. No estoy buscando anular el comportamiento, solo quiero saber cuál es el comportamiento predeterminado.

¿Fue útil?

Solución

Se documenta en MSDN en ¿Cómo el tiempo de ejecución? Localiza las asambleas . En particular, el GAC solo se busca si el ensamblaje se carga usando un nombre fuerte. Todavía puede haber políticas de publicidad en su lugar que "redirige" a otra asamblea, pero no hay reglas automáticas en su lugar.

En mi opinión, el GAC es solo algo que debe ser utilizado por Microsoft para el Framework .NET y puede eliminar un montón de dolor distribuyendo su solicitud o biblioteca sin usar el GAC (a excepción del marco .NET Framework, por supuesto) .

Referencia de una versión específica de un ensamblaje es una propiedad de tiempo de construcción y no afecta el comportamiento de tiempo de ejecución. Sin embargo, cuando una referencia de ensamblaje se compila en un ejecutable, la versión se almacena en el ejecutable y, en tiempo de ejecución, se carga la versión específica (después de que se hayan aplicado las reglas de redirección de ensamblaje).

Para resumirlo: para .NET para cargar otra versión del ensamblaje solicitado, tiene que haber una redirección de ensamblaje en su lugar. Su solicitud puede proporcionar redirecciones en el archivo App.config y el GAC puede tener políticas de publicador.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top