我正在读取一个xml文件,并希望根据应用程序的位置从相对目录创建它,类似于使用Server.MapPath的ASP.NET或使用tilda。

如何在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");
有帮助吗?

解决方案

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

OR

XDocument xmlDoc = XDocument.Load(@".\Data\customers.xml");
BTW,这与WPF无关,与Windows路径无关。

其他提示

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

我假设 Data 目录将与您的应用一起部署在与EXE相同的根目录中。这通常是安全的,除非涉及影子复制;例如,当您使用NUnit测试此代码时。 (使用卷影复制,组成应用程序的程序集将被复制到临时目录,但是这样的文件会被遗忘。)

假设您不打算在部署后修改 customers.xml ,最安全的方法是将文件作为资源嵌入到程序集中。

尝试 File.Create(&.; ./ HiImHere.txt")以查看点目录的位置;之后尝试相对于 HiImHere.txt 所在的路径。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top