2012-07-03 10 views
5

Recientemente descubrí que se puede copiar sobre un conjunto que está en uso al renombrar el archivo y luego realizar la copia. P.EJ.¿Es seguro cambiar el nombre y copiar un ensamblaje?

C: \ carpeta \ MyLibrary.dll
=> cambiar el nombre a C: \ carpeta \ MyLibrary.dll_old
=> copia nueva versión C: \ carpeta \ MyLibrary.dll (v2.0)

Me dijeron que la próxima vez que se inicie la aplicación, cargará este nuevo conjunto. Y mientras la aplicación continúa ejecutándose, continuará usando el ensamblaje anterior (aunque se renombre _old).

Parece un truco para mí. ¿Es seguro actualizar los ensambles de esta manera?

+1

"Hack" es un término muy apropiado :) "Weird s ** t" y "Evil Craziness" también vienen a la mente :) – paulsm4

+8

Se llama "Hot Deploy" - ver http://stackoverflow.com/questions/ 2335755/how-to-update-an-assembly-for-a-running-c-sharp-process-aka-hot-deploy – dash

+0

Muchos enfoques de plugin lo admiten. Mientras que para los servicios de Windows, https://github.com/Topshelf/Topshelf/ lo admite. – kenny

Respuesta

3

Es seguro. Mientras el ensamblaje antiguo permanezca cargado, el mismo dominio de la aplicación no intentará cargarlo nuevamente. El nombre del archivo no es importante para la ejecución continua de la aplicación.

Sin embargo, en el uso de producción, probablemente tenga que pensar en más de 3 versiones simultáneas y un mecanismo para eliminar eventualmente los archivos no utilizados.

+0

¿Puedes aclarar a qué te refieres con "hay más de 3 versiones simultáneas"? –

+0

@ P.Brian.Mackey: simplemente adjuntar un sufijo '_old 'puede no ser suficiente. Los sufijos deben ser dinámicos. Es posible que la versión 1 aún se esté ejecutando cuando decida implementar en caliente la versión 3 en lugar de la versión 2 y fallará el cambio de nombre de la versión 2. Por otro lado, los sufijos dinámicos le dolerán más si su mecanismo automatizado para purgar los archivos DLL no utilizados no es confiable. –

Cuestiones relacionadas