2009-04-30 15 views
7

Sto leggendo un file xml e voglio farlo da una directory relativa basata sul percorso dell'applicazione, simile a ASP.NET con Server.MapPath o usando la tilda.Come caricare dal percorso relativo nell'applicazione WPF?

Come è possibile 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"); 

risposta

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

O

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

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

+0

hmmm, nessuno di quelli sembra funzionare, ho il customers.xml impostato su "Copia in output directory = copia sempre", altri suggerimenti? –

+0

Suggerisco che Environment.CurrentDirectory è ciò che ci si aspetta e che garantisce effettivamente che il file Customers.xml sia quello in cui ci si aspetta nell'output. –

+0

string directory = System.IO.Directory.GetCurrentDirectory(); –

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

suppongo directory Data sta per arrivare schierato con la tua applicazione, nella stessa directory root come EXE. Questo è generalmente sicuro, tranne nel caso in cui sia implicata la copia shadow; per esempio, quando usi NUnit per testare questo codice. (Con la copia shadow, gli assembly che compongono la tua app vengono copiati in una directory temporanea, ma i file di questo tipo vengono lasciati.)

Supponendo che tu non abbia intenzione di modificare customers.xml dopo l'implementazione, il modo più sicuro per gestirlo è incorporare il file come risorsa all'interno dell'assembly.

0

Provare a File.Create("./HiImHere.txt") per vedere dove si trova la directory dei punti; dopo di ciò prova il percorso relativo a dove è HiImHere.txt.

+1

Perché il downvote? –

Problemi correlati