Deployment y paths a las DLL

10/03/2005 - 14:01 por Francisco Gomez | Informe spam
Aún no tengo muy claro como va la cosa de las referencias a DLL

El caso es que las DLL, tras el deployment (instalación), no vayan en el
directorio de los ejecutables. Mi idea es que la cosa quede así:

<Directorio principal de la aplicación>
<Directorio ejecutables>
<Directorio DLL's>
<Directorio Datos>

La cuestión no está tan solo en que el proyecto de instalación coloque cada
fichero en su sitio (esto, creo que sé hacerlo), sino que despues, durante la
ejecución, los ejecutables encuentren las DLL, por lo que supongo que en el
propio ensamblado de estos ejecutables, de alguna manera, debo de poder
establecer una ruta que, además, deberá ser relativa al directorio de
instalación que el usuario final elija durante el deployment.

¿Alguien me puede ayudar?

Gracias
 

Leer las respuestas

#1 A.Poblacion
10/03/2005 - 16:09 | Informe spam
"Francisco Gomez" wrote in
message news:
Aún no tengo muy claro como va la cosa de las referencias a DLL

El caso es que las DLL, tras el deployment (instalación), no vayan en el
directorio de los ejecutables. Mi idea es que la cosa quede así:

<Directorio principal de la aplicación>
<Directorio ejecutables>
<Directorio DLL's>
<Directorio Datos>

La cuestión no está tan solo en que el proyecto de instalación coloque


cada
fichero en su sitio (esto, creo que sé hacerlo), sino que despues, durante


la
ejecución, los ejecutables encuentren las DLL, por lo que supongo que en


el
propio ensamblado de estos ejecutables, de alguna manera, debo de poder
establecer una ruta que, además, deberá ser relativa al directorio de
instalación que el usuario final elija durante el deployment.

¿Alguien me puede ayudar?



Lo más sencillo sería que pusieras el directorio de las DLLs por debajo del
directorio de los ejecutables. En ese caso basta que edites el fichero
.config de tu ejecutable para ponerle un comando "probing privatePath directorio" indicándole el directorio de las dlls.
Sin embargo, por motivos de seguridad, el privatePath no admite que le
pongas "..\directorio", con lo que no te sirve si el directorio de las dlls
está "en paralelo" al de los ejecutables.

Puedes meter dentro de tus ejecutables unas instrucciones para decirles
dónde tienen que buscar las DLLs:

AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.AssemblyResolve += new ResolveEventHandler(MiRutina);

Y dentro de "MiRutina" buscas cada assembly en donde tú sabes que lo has
instalado y lo devuelves. Tendrás que investigar un poco porque requiere
saber algo de Reflection.

Preguntas similares