Domanda

Sto leggendo un file xml e desidero crearlo da una directory relativa in base alla posizione dell'applicazione, simile ad ASP.NET con Server.MapPath o usando la tilda.

Come puoi ottenere il percorso relativo in 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");
È stato utile?

Soluzione

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

o

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

A proposito, questo non ha nulla a che fare con WPF e tutto a che fare con i percorsi di Windows.

Altri suggerimenti

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

Suppongo che la directory Data verrà distribuita con la tua app, nella stessa directory root del tuo EXE. Questo è generalmente sicuro, tranne quando è coinvolta la copia shadow; ad esempio, quando si utilizza NUnit per testare questo codice. (Con la copia shadow, gli assembly che compongono l'app vengono copiati in una directory temporanea, ma i file come questo vengono lasciati indietro.)

Supponendo che non si preveda di modificare customers.xml dopo la distribuzione, il modo più sicuro per gestirlo è incorporare il file come risorsa all'interno dell'assembly.

Prova File.Create (" ./ HiImHere.txt ") per vedere dov'è la directory dei punti; dopodiché prova il percorso relativo a dove HiImHere.txt .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top