Come caricare dal percorso relativo nell'applicazione WPF?
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");
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
.