Planteamiento del problema: Implemente un sistema de complemento que permita sobrescribir los ensamblajes asociados (evite el bloqueo de archivos). En .Net, los ensamblados específicos no se pueden descargar, solo se pueden descargar AppDomains completos.¿Cómo implemento los plugins de .NET sin usar AppDomains?
Lo publico porque cuando intentaba resolver el problema, cada solución hacía referencia al uso de múltiples AppDomains. Varios AppDomains son muy difíciles de implementar correctamente, incluso cuando se diseñaron al inicio de un proyecto.
Además, AppDomains no funcionó para mí porque necesitaba transferir el tipo entre dominios como una configuración para la actividad de InvokeWorkflow de Speech Server worfklow. Desafortunadamente, al enviar un tipo de dominio, el ensamblado se inyecta en el dominio de aplicación local.
Además, esto es relevante para IIS. IIS tiene una configuración de Shadow Copy que permite sobrescribir un ensamblaje en ejecución mientras se carga en la memoria. El problema es que (al menos en XP, no se probó en servidores de producción 2003) cuando se carga un ensamblado mediante programación, la instantánea no funciona (porque está cargando el archivo DLL, no IIS).
Supongo que esto significa que todavía tendría que reiniciar la aplicación para utilizar el nuevo tapón en una vez que había sido sustituido en el disco? Tenía la impresión de que una vez que se ha cargado un tipo, no se puede cambiar, incluso si vuelve a cargar el conjunto. –
Puede usar el nuevo tipo simultáneamente. No estás técnicamente "recargando" el conjunto. En su lugar, está cargando el nuevo ensamblaje al lado del anterior. Si los ensambles cambian con frecuencia, eventualmente se quedará sin memoria y necesitará reiniciar la aplicación. –