¿Puedo configurar una aplicación .NET de forma (configuración en Visual Studio) que hace referencia a un montaje de "local" (no en GAC) en lugar de un montaje dentro de la GAC, aunque ambos conjuntos tienen el mismo nombre y la misma versión ?¿Cómo evitar que una aplicación .NET cargue/haga referencia a un ensamblaje desde el GAC?
Respuesta
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):
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.
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.
Comprueba la memoria caché de ensamblaje global. Si el ensamblaje se encuentra allí, el tiempo de ejecución usa este ensamblaje.
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.
¿Has visto esta respuesta?
Forcing the ASP.NET Application to load the assembly from bin not from GAC
Parece que está intentando hacer lo mismo.
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
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
- 1. ¿Cómo hacer referencia al ensamblaje desde GAC?
- 2. Cómo hacer referencia a un ensamblaje en GAC
- 3. C#: ¿Cómo cargar el ensamblaje desde GAC?
- 4. Referencia 3.5 ensamblaje desde la aplicación 2.0?
- 5. ¿Cómo puedo hacer referencia a un dll en el GAC desde Visual Studio?
- 6. ¿Cómo extraer un ensamblaje del GAC?
- 7. Instalación de un ensamblaje en GAC para mono/.NET
- 8. ¿Cómo puedo arreglar un ensamblaje que hace referencia a una versión antigua (beta) de .NET?
- 9. Instalar un ensamblaje en GAC mediante programación
- 10. 'debe agregar una referencia a Microsoft.Practices.EnterpriseLibrary.Common' a pesar de que el montaje es en la GAC
- 11. ¿Cómo puedo forzar .NET para usar una copia local de un ensamblaje que está en el GAC
- 12. ¿Se necesita instalar un ensamblado COM + (.net) en el GAC?
- 13. ¿Cómo instalar el ensamblaje en GAC usando Msbuild?
- 14. C# cómo registrar el ensamblaje en el GAC sin GacUtil?
- 15. ¿Por qué mi ensamblaje no está visible en "Agregar referencia> .Net" cuando está instalado en el GAC?
- 16. .NET: Acceder a miembros no públicos desde un ensamblaje dinámico
- 17. Cómo solucionar una advertencia "El ensamblaje al que se hace referencia se dirige a un procesador diferente de la aplicación"
- 18. Cómo llamar a una DLL .NET desde un proceso Win32?
- 19. ¿A GAC, o no a GAC?
- 20. ¿Cómo evitar que Visual Studio actualice las referencias de ensamblaje?
- 21. ¿No se puede desinstalar un Ensamblaje de GAC?
- 22. ¿Cómo registro un archivo .NET DLL en el GAC?
- 23. ¿Cómo evitar que se desinstale una aplicación?
- 24. ¿Cómo creo y uso un "Ensamblaje de referencia" de solo metadatos .NET?
- 25. .NET dll de referencia desde otra ubicación
- 26. cómo hacer referencia al ensamblaje de múltiples versiones
- 27. Cómo reutilizar un ensamblado .Net desde una aplicación C pura
- 28. Llamar a un ensamblaje x64 a través de COM desde una aplicación de 32 bits
- 29. ¿Cómo volver a cargar un ensamblaje para un dominio de aplicación .NET?
- 30. ¿Cómo agrego un ensamblado .NET al GAC en InnoSetup?
Oh, no encontré esta respuesta cuando busqué StackOverFlow para este tema. Pero tienes razón, finalmente la pregunta es casi la misma. – Flo