Problemas con ruta de acceso a un xml

12/04/2005 - 16:47 por andy O | Informe spam
Hola a todos.

Tengo dos proyectos ditintos uno es una clase que lee un archivo mediante un
método estático

public static string dameBDConexion(){

System.IO.StreamReader stream = new System.IO.StreamReader ("Base.xml");
...

}

y otro proyecto que es una consola de prueba, que llama al metodo estático.

El problema es que me da una excepcion de archivo no encontrado. viendo los
logs de error, me percato que el archivo base.xml lo esta buscando en el
directorio debug del proyecto consola y no en el proyecto que lee el XML.

¿Cómo hago para que en lugar de leer desde la ruta que invoca al metodo lo
lea desde el proyecto que implementa la lectura a dicho archivo xml?

Espero que me ayuden
Gracias.

Preguntas similare

Leer las respuestas

#6 Octavio Hernandez
17/04/2005 - 22:51 | Informe spam
Andy,

En cualquier caso (consola, WinForms, ewc.), GetExecutingAssembly() te
devuelve el ensamblado que está EN EJECUCION. Si haces la llamada DENTRO de
la DLL y obtienes la ruta, será la ruta de la la DLL y no del ejecutable que
la llama.

Slds - Octavio

"andy O" escribió en el mensaje
news:
Mostrar la cita
#7 Miguel Angel Campos
18/04/2005 - 09:09 | Informe spam
Hola Andy,

Creo que el problema lo tienes en la interpretación de como funcionan las
relaciones entre proyectos en Visual Studio. Como tu has dicho tienes dos
proyectos, uno genera una DLL (le llamamos proyecto DLL) y otro genera un
EXE (le llamamos proyecto EXE). Si te fijas en las propiedades de la
referencia desde el proyecto EXE al proyecto DLL, existe una propiedad que
dice Copia Local (que por defecto es True); esto quiere decir que Visual
Studio cuando compila el proyecto EXE a continuación copia la DLL que se ha
generado en el proyecto DLL para así poder ejecutarlo, pero los más
importante, sólo copia la DLL no copia nada mas, y ademas al existir una
copia local el proyecto EXE no sabe donde estaba anteriormente la DLL
original.
Seguro que ahora pienas, pues pongo Copia Local a False, pero eso lo que te
va a provocar es que al ejecutarlo te dira que no encuentra el tipo donde
está definido el método estático. Se pone a false cuando quieres que por
defecto se busque en el GAC, o cuando estableces mediante el fichero de
configuración .config directivas de búsquedas de ensamblados.

Tienes que diferenciar muy bien el marco de trabajo durante el desarrollo y
pruebas locales, del marco de ejecución final de la aplicación. Tienes que
tener en cuenta que si tienes un proyecto con muchas DLL y un sólo EXE,
cuando distribuyas tu aplicación los pondrás todos en un sólo directorio,
junto con los ficheros necesarios (en tu caso por ejemplo los ficheros XML).

Me imagino que aún tienes dudas, así que sigue preguntando.

Un Saludo,

Miguel Angel Campos
MCAD.NET

"andy O" escribió en el mensaje
news:
Mostrar la cita
#8 andy O
19/04/2005 - 15:09 | Informe spam
Gracias Miguel.

Esta claro tu explicación,es que todavia me cuesta trabajo quitarme de la
mente la programación tradicional con VB 6.

Pero no has explicado cómo en modo de pruebas locales puedo hacer que
funcione la lectura xml.
¿O es que debo copiar el xml en el bin del proyecto exe. o igual manera al
bin del proyecto web si es que se trabaja con web.?
#9 Miguel Angel Campos
19/04/2005 - 20:15 | Informe spam
Tienes que copiarlo a mano.
Has pensado en incluir el fichero como un recurso incrustado dentro de la
DLL?

Un Saludo,

Miguel Angel Campos
MCAD.NET

"andy O" escribió en el mensaje
news:
Mostrar la cita
#10 andy O
20/04/2005 - 16:41 | Informe spam
Bueno, tendré que copiarlo a mano.
Antes ya había intentado incrustarlo como recurso de la dll, pero no funcionó.

"Miguel Angel Campos" escribió:

Mostrar la cita
Ads by Google
Search Busqueda sugerida