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

Preguntas similare

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.
Respuesta Responder a este mensaje
#2 Francisco Gomez
10/03/2005 - 18:01 | Informe spam
Er...
Me parece que ando algo perdido... Es la primera vez que hago un proyecto de
instalación ...

Mi aplicacion es una aplicación Windows Form en C#. En mi directorio
bin/debug, donde se compila el ejecutable, solo aparece el fichero .exe y los
DLL que haya establecido poniendo 'Copia Local' a true. No veo por ninguna
parte un fichero miaplicación.exe.config. ¿Puede ser que lo que me estas
comentando es ara el deployment de aplicaciones Web?


"A.Poblacion" escribió:

"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.




Respuesta Responder a este mensaje
#3 Octavio Hernandez
10/03/2005 - 22:17 | Informe spam
Francisco,

En las aplicaciones WinForms el archivo de configuración no se crea por
defecto, debes agregarlo tú (Proyecto > Agregar > Fichero de configuración).

Slds - Octavio

"Francisco Gomez" escribió en el
mensaje news:
Er...
Me parece que ando algo perdido... Es la primera vez que hago un proyecto
de
instalación ...

Mi aplicacion es una aplicación Windows Form en C#. En mi directorio
bin/debug, donde se compila el ejecutable, solo aparece el fichero .exe y
los
DLL que haya establecido poniendo 'Copia Local' a true. No veo por ninguna
parte un fichero miaplicación.exe.config. ¿Puede ser que lo que me estas
comentando es ara el deployment de aplicaciones Web?


"A.Poblacion" escribió:

"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.




email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida