usar reconoce interno externo ensamblado descargar como comando cache c# .net assemblies gac

c# - reconoce - ¿Cómo evitar que una aplicación.NET cargue/haga referencia a un ensamblaje desde el GAC?



gacutil no se reconoce como un comando interno o externo (4)

¿Puedo configurar una aplicación .NET de una manera (configuración en Visual Studio) que hace referencia a un ensamblado "local" (no en GAC ) en lugar de a un ensamblado dentro del GAC, aunque ambos ensamblajes tienen el mismo nombre y la misma versión?



Para implementar con éxito su aplicación .NET Framework, debe comprender cómo el tiempo de ejecución del lenguaje común se ubica y se une a los ensamblajes 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


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

Estos son los pasos que utiliza el tiempo de ejecución para resolver las referencias de ensamblaje (de Cómo el tiempo de ejecución localiza los ensamblajes ):

  1. Determina la versión de ensamblaje correcta al examinar los archivos de configuración aplicables, incluidos el archivo de configuración de la aplicación, el archivo de política del editor y el archivo de configuración de la máquina. Si el archivo de configuración está ubicado en una máquina remota, el tiempo de ejecución debe localizar y descargar primero el archivo de configuración de la aplicación.

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

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

  4. Sondas para el montaje (... material omitido ...)

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

No hay una versión que compruebe ensamblajes sin nombres fuertes, ni el tiempo de ejecución verifica en el caché de ensamblados global para ensamblajes sin nombres fuertes.

Por lo tanto, si puede permitirse eliminar la firma del ensamblado local, la aplicación la usará en lugar de la del GAC.

Para obtener más detalles de los que probablemente pueda desear sobre los mecanismos de enlace de tiempo de ejecución, consulte el blog de Suzanne Cook .

Esta entrada de blog de Scott Hanselman también proporciona una gran visión general del proceso de vinculación.