Pregunta

Estoy leyendo un archivo xml y quiero crearlo desde un directorio relativo basado en la ubicación de la aplicación, similar a ASP.NET con Server.MapPath o usando tilda.

¿Cómo puede obtener la ruta relativa en WPF?

WORKS: XDocument xmlDoc = XDocument.Load(@"c:\testdata\customers.xml");
DOES NOT WORK: XDocument xmlDoc = XDocument.Load(@"~\Data\customers.xml");
DOES NOT WORK: XDocument xmlDoc = XDocument.Load(@"~/Data/customers.xml");
¿Fue útil?

Solución

XDocument xmlDoc = XDocument.Load(@"Data\customers.xml");

O

XDocument xmlDoc = XDocument.Load(@".\Data\customers.xml");

Por cierto, esto no tiene nada que ver con WPF y todo que ver con las rutas de Windows.

Otros consejos

XDocument xmlDoc = XDocument.Load(
    Path.Combine(
        AppDomain.CurrentDomain.BaseDirectory, 
        @"Data\customers.xml"));

Supongo que el directorio Data se implementará con su aplicación, en el mismo directorio raíz que su EXE. En general, esto es seguro, excepto cuando se trata de copiar instantáneas; por ejemplo, cuando usa NUnit para probar este código. (Con las instantáneas, los ensamblajes que componen su aplicación se copian en un directorio temporal, pero los archivos como este se quedan atrás).

Suponiendo que no planea modificar clients.xml después de la implementación, la forma más segura de manejar esto es incrustar el archivo como un recurso dentro de su ensamblaje.

Pruebe File.Create (" ./ HiImHere.txt ") para ver dónde está el directorio de puntos; después de eso intente la ruta relativa a donde está HiImHere.txt .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top