Archivos DLL configurables.

06/02/2009 - 10:54 por Rafael Villaran. RAVIPE | Informe spam
Hola a todos.
Estoy creando una librería *.dll en C# para distribuir en los equipos de mi
empresa y como referencia en nuestra aplicaciones.
¿Existe alguna posibilidad de crearla configurable?. O sea, enlazar la
librería a un archivo XML, por ejemplo, con los parámetros de la misma. Al
instanciar la clase que contiene la librería esta tomaría los valores de su
archivo de configuración.
Al registrar la librería nos debería avisar si no se encuentra el archivo de
configuración o de dependencias.
Espero que la idea haya quedado clara.
Muchas gracias a todos.
Saludos.
rafael villarán

Preguntas similare

Leer las respuestas

#6 Pedro Maicas
06/02/2009 - 19:43 | Informe spam
On Fri, 6 Feb 2009 04:39:00 -0800, Rafael Villaran. RAVIPE
wrote:

A mi me gustaría que no tuviésemos que volver a compilar, o sea, se hace
parametrizable, los parámetros los tomas de un archivo y ese archivo se
d



En mi opinion, estás imaginando problemas donde no los hay, la
primera respuesta de Alberto es la correcta. No existe
ningún problema para que abras un fichero xml y cargues su contenido
¿ desde cuando leer un fichero requiere recompilar ?

Lo único que sucede es que donde tu imaginas "constantes"
configurables, debes usar variables que cargas con los valores
que lees del xml. La lectura del xml y carga de las variables
puedes hacerla en el constructor de cada clase que vaya a usar
esos parámetros configurables.



Saludos :-) - Pedro -

http://www.maicas.net/
Respuesta Responder a este mensaje
#7 Jesús
06/02/2009 - 19:46 | Informe spam
Hola Alberto,

en línea.

"Alberto Poblacion"
escribió en el mensaje de noticias
news:%
"Rafael Villaran. RAVIPE"
wrote in message
news:
[...]
Mi pregunta va en el sentido de si .NET contempla de alguna manera este
tipo
de librerías y se distribuyen con un tipo de archivo concreto, de
dependencias, no sé.



Bueno, .Net contempla este mecanismo de configuración a través de los
archivos ".config"... Pero en este caso no resuelven tu problema, porque
la DLL siempre busca el .config del .EXE que llamó a la DLL (a no ser que
la cargues en un AppDomain y le pases como argumento otro .config
distinto). Así que el ".config" no queda asociado a la DLL. Me temo que la
única forma de adjuntar a tu dll el archivo de configuración es que lo
leas mediante tu propio código, por ejemplo en el constructor de clase de
cada una de las clases que haya en la DLL.



Pues yo creo que los archivos config sí que resuelven el problema. Una dll
puede ser utilizada por varias aplicaciones dentro de un mismo equipo y cada
una de las aplicaciones puede necesitar una configuración diferente para la
dll, por tanto el mejor sitio para poner la configuración es en el archivo
de configuración de la aplicación, no que exista una configuración
específica y global para la dll.

Normalmente lo que se suele hacer es definir una sección de configuración,
para ello en la dll se define una clase que hereda de ConfigurationSection
como por ejemplo la siguiente:

public class MyConfigurationSection : ConfigurationSection
{
[ConfigurationProperty("MyConfigurationProperty",
DefaultValue="DefaultValueForMyConfigurationProperty")]
public string MyConfigurationProperty
{
get { return (string) this["MyConfigurationProperty"]; }
set { this["MyConfigurationProperty"] = value; }
}
}

En esta clase se definen tantas propiedades como parámetros de
configuración, también pueden definirse colecciones, pero dejémolo así para
hacer el ejemplo más sencillo.

Además de esta clase podemos definir otra clase dentro de la dll para mayor
facilidad. Está clase será la que utilicemos dentro del código de la dll
para saber el valor de los parámetros de configuración:

public static class MyConfiguration
{
private static MyConfigurationSection section;

static MyConfiguration()
{
section = (MyConfigurationSection)
ConfigurationManager.GetSection("MyConfigurationSection");
if (section == null)
{
section = new MyConfigurationSection();
}
}

public static string MyConfigurationProperty
{
get { return section.MyConfigurationProperty; }
}
}

Esta clase funciona de la siguiente manera: cuando están definidos los
parámetros de configuración en el archivo de configuración de la aplicación,
toma de allí los valores. Si no están definidos, las propiedades devuelven
el valor predeterminado.

En el archivo de configuración de la aplicación ponemos lo siguiente para
"configurar la dll":

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="MyConfigurationSection"
type="MyClassLibrary.MyConfigurationSection, MyClassLibrary"/>
</configSections>

<MyConfigurationSection
MyConfigurationProperty="MyConfiguationPropertyValue" />

</configuration>


Dentro de la dll simplemente ponemos:

string myConfigurationPropertyValue =
MyConfiguration.MyConfigurationProperty

Para saber el valor del parámetro de configuración MyConfigurationProperty.


Saludos:

Jesús López




La idea sobre todo es que al registrar la librería se
exigiera ese archivo, de lo contrario no se permite el registro.



Estás pensando en librerías de tipo COM, no de .Net. Las librerías de
.Net no se registran. Símplemente se copian a un directorio y ya está.
Tendría que ser el proceso de instalación que copia las librerías el que
copie simultáneamente ese archivo. Por ejemplo, si se instala con un .msi,
desde luego no hay problema en que el msi instale también el archivo de
configuración.

Respuesta Responder a este mensaje
#8 Rafael Villaran. RAVIPE
07/02/2009 - 21:49 | Informe spam
Muchísimas gracias a todos por vuestro. Interés.
Con la información que habéis proporcionado seguro que resuelvo mi "problema"

Pedro, efectivamente dentro tendría variables que al instanciar la clase
dentro de la librería estas podrían tomas los valores del archivo xml de
config. Pero pensaba que había algún tipo de archivo que se podía vincular a
una DLL y al registrar esta el archivo lo incorporara también en el lugar
adecuado.
La idea de Jesús me parece muy interesante para incorporar en DLLs propias.

Probaré las diferentes opciones, no os quepa la menor duda.
De nuevo gracias a todos.
Un Saludo
rafael villaran

"Rafael Villaran. RAVIPE" wrote:

Vamos a ver si soy capaz de explicarme.
Yo desarrollo una librería. Archivo dll que distribuyo en mis equipos.
Esta librería internamente maneja unos valores, declaro una constante con un
valor. Valor este que accedo tanto desde dentro de la librería como al
instanciarla si me hiciera falta. P.e.:

public const string DESCR_HOSPI = "Hospital General"

Si se cambiara el nombre del hospital yo tendría que cambiarlo en el fuente,
tendría que volver a compilar la librería y tendría que volver a
distribuirla.

A mi me gustaría que no tuviésemos que volver a compilar, o sea, se hace
parametrizable, los parámetros los tomas de un archivo y ese archivo se
distribuye con la librería. Perfecto, no creo que sea ningún problema leer
un XML, que se encontraría en la misma ruta de la librería y ahí estarían los
parámetros configurables de la librería. Es más si el archivo no se encuentra
la librería podría lanzar una excepción que avisara de la situación.
Mi pregunta va en el sentido de si .NET contempla de alguna manera este tipo
de librerías y se distribuyen con un tipo de archivo concreto, de
dependencias, no sé. La idea sobre todo es que al registrar la librería se
exigiera ese archivo, de lo contrario no se permite el registro.

No sé si me he explicado bien o si realmente me estoy complicando la vida
más de lo normal.

Muchas Gracias por todo Alberto. Veo que estás siempre a pié de cañón.
De nuevo muchas gracias.



"Alberto Poblacion" wrote:

> "Rafael Villaran. RAVIPE"
> wrote in message news:
> > Estoy creando una librería *.dll en C# para distribuir en los equipos de
> > mi
> > empresa y como referencia en nuestra aplicaciones.
> > ¿Existe alguna posibilidad de crearla configurable?. O sea, enlazar la
> > librería a un archivo XML, por ejemplo, con los parámetros de la misma. Al
> > instanciar la clase que contiene la librería esta tomaría los valores de
> > su
> > archivo de configuración.
>
> No entiendo la pregunta. ¿Qué es lo que te falta para conseguir lo que
> quieres? ¿No sabes abrir el xml desde el constructor de la clase? ¿O
> enontrar su ruta? ¿O procesar el contenido?
> ¿Qué es concretamente lo que te falta saber para abrir un archivo xml
> desde la dll y utilizar su contenido?
>
>
Respuesta Responder a este mensaje
#9 Rafael Villaran. RAVIPE
07/02/2009 - 21:50 | Informe spam
Muchas gracias a todos.
Me habéis dado ideas de sobra para solucionar mi problema.

Repito, mucha gracias.

Un Saludo
rafael villaran

"Rafael Villaran. RAVIPE" wrote:

Vamos a ver si soy capaz de explicarme.
Yo desarrollo una librería. Archivo dll que distribuyo en mis equipos.
Esta librería internamente maneja unos valores, declaro una constante con un
valor. Valor este que accedo tanto desde dentro de la librería como al
instanciarla si me hiciera falta. P.e.:

public const string DESCR_HOSPI = "Hospital General"

Si se cambiara el nombre del hospital yo tendría que cambiarlo en el fuente,
tendría que volver a compilar la librería y tendría que volver a
distribuirla.

A mi me gustaría que no tuviésemos que volver a compilar, o sea, se hace
parametrizable, los parámetros los tomas de un archivo y ese archivo se
distribuye con la librería. Perfecto, no creo que sea ningún problema leer
un XML, que se encontraría en la misma ruta de la librería y ahí estarían los
parámetros configurables de la librería. Es más si el archivo no se encuentra
la librería podría lanzar una excepción que avisara de la situación.
Mi pregunta va en el sentido de si .NET contempla de alguna manera este tipo
de librerías y se distribuyen con un tipo de archivo concreto, de
dependencias, no sé. La idea sobre todo es que al registrar la librería se
exigiera ese archivo, de lo contrario no se permite el registro.

No sé si me he explicado bien o si realmente me estoy complicando la vida
más de lo normal.

Muchas Gracias por todo Alberto. Veo que estás siempre a pié de cañón.
De nuevo muchas gracias.



"Alberto Poblacion" wrote:

> "Rafael Villaran. RAVIPE"
> wrote in message news:
> > Estoy creando una librería *.dll en C# para distribuir en los equipos de
> > mi
> > empresa y como referencia en nuestra aplicaciones.
> > ¿Existe alguna posibilidad de crearla configurable?. O sea, enlazar la
> > librería a un archivo XML, por ejemplo, con los parámetros de la misma. Al
> > instanciar la clase que contiene la librería esta tomaría los valores de
> > su
> > archivo de configuración.
>
> No entiendo la pregunta. ¿Qué es lo que te falta para conseguir lo que
> quieres? ¿No sabes abrir el xml desde el constructor de la clase? ¿O
> enontrar su ruta? ¿O procesar el contenido?
> ¿Qué es concretamente lo que te falta saber para abrir un archivo xml
> desde la dll y utilizar su contenido?
>
>
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida