Ampliar funcionalidad DLL

11/09/2007 - 17:34 por Lazarte Federico | Informe spam
Estimados.
Tenemos un gran sistema funcionando en la actualidad al cual se le
deben agregar nuevas mejoras y mas opciones. El problema radica en que
esta realizado con un modelo de N capas y la intercomunicación entre
ellas es todo a travez de DLLs. En la primer despliegue nos
encontramos con que el aplicativo no funcionaba como lo venia haciendo
con las dlls nuevas, ya que habia mòdulos que directamente no cargaban
o tiraban exepciones.
La idea seria mantener las dlls antiguas, pongamos versión 1.0 y las
nuevas mejoras ir en otra dll, identica a la anterior, solo que
agregando las mejoras.
Como se podria hacer esto? Cambiando la versiòn de la dll a 2.0 por
ejemplo y luego registrarla en la GAC?.
Hay forma de que los métodos nuevos utilizen si o si determinada
versión de las dlls?.
Muchas gracias.
 

Leer las respuestas

#1 Alberto Poblacion
11/09/2007 - 20:21 | Informe spam
"Lazarte Federico" wrote in message
news:
Tenemos un gran sistema funcionando en la actualidad al cual se le
deben agregar nuevas mejoras y mas opciones. El problema radica en que
esta realizado con un modelo de N capas y la intercomunicación entre
ellas es todo a travez de DLLs. En la primer despliegue nos
encontramos con que el aplicativo no funcionaba como lo venia haciendo
con las dlls nuevas, ya que habia mòdulos que directamente no cargaban
o tiraban exepciones.
La idea seria mantener las dlls antiguas, pongamos versión 1.0 y las
nuevas mejoras ir en otra dll, identica a la anterior, solo que
agregando las mejoras.
Como se podria hacer esto? Cambiando la versiòn de la dll a 2.0 por
ejemplo y luego registrarla en la GAC?.
Hay forma de que los métodos nuevos utilizen si o si determinada
versión de las dlls?.



Puedes, efectivamente, hacer una DLL con versión 2 y registrarla en el
GAC igual que la versión 1. Las dos versiones coexistirán sin problemas. De
forma predeterminada, los programas usarán la versión con la que fueron
compilados, es decir, que si compilaste un exe con la versión 1 de la dll,
llamará a esta versión aunque hayas registrado también la 2 y viceversa.
Si quieres cambiar este comportamiento, es decir, que un programa
compilado con la 1 llame a la 2, sin tener que recompilarlo, puedes
conseguirlo metiendo un <BindingRedirect .../> en el app.config.

Para lo que no hay ninguna solución sencilla es para hacer una mezcla de
las dos cosas, es decir, hacer que un exe llame a unos métodos en la dll de
versión 1 y a otros en la de versión 2 sin tocar nada en el exe. Si no
importa tocar el exe, entonces sí que podría hacerse algo, por ejemplo usar
un espacio de nombres distinto en cada dll, y en cada llamada especificar el
espacio de nombres de la versión que se quiere usar.

Preguntas similares