2011-05-12 36 views
5

Estoy usando C#. En mi proyecto, tengo una carpeta xml en la que tengo un archivo xml que dice "archivo.xml" .. Quiero usar el archivo en mi proyecto. Quiero aprovechar ese archivo desde el propio proyecto actual, por que estoy dando la ruta como:ruta relativa usando C#

xmlDoc.Load(@"..\xml\file.xml"); 

pero no está tomando el archivo. Está mostrando alguna ruta "C:" ... cómo puedo recuperar este archivo del proyecto.

Respuesta

6

Debe establecer la propiedad Copy to Output Directory en el archivo en el Explorador de soluciones para enviar el archivo a la carpeta con su EXE.

entonces usted puede escribir

xmlDoc.Load(Path.Combine(typeof(MyClass).Assembly, "file.xml")); 

Este utiliza la ubicación real del archivo EXE y funcionará sin importar el directorio actual.

EDITAR: En ASP.Net, debe colocar el archivo en la carpeta App_Data (que no es accesible al público), a continuación, escribir

xmlDoc.Load(Server.MapPath("~/App_Data/file.xml")); 
+0

En mi caso, este enfoque no funciona debido a que el proyecto de Visual Studio que contiene el archivo es un proyecto de base de datos SQL. –

2

Debe establecer la Copy to Output Directory a "Copiar si es más nuevo" y luego se puede utilizar:

Path.Combine(Application.StartupPath, "file.xml"); 
+0

no funciona ... da la excepción "archivo no encontrado" y muestra algunos "C: archivos de programa ....." ruta de acceso. – mucchar

+0

¿Es una aplicación de Windows o ASP.NET? – jaywayco

+0

es la aplicación asp – mucchar

0
Path.Combine(typeof(MyClass).Assembly.Location.ToString(), "file.xml") 
+1

No funciona, porque 'Location.ToString()' incluye MyClass.exe –