2012-10-02 180 views
1

我有一个名为settings.xml文件位于:获取文件的相对路径?

c:\solution1\solution1\data\settings.xml

现在,我做的:

XDocument doc = XDocument.Load(@"c:\solution1\solution1\settings.xml"); 

我想不出如何使用相对路径做。

+0

开始见http://stackoverflow.com/questions/362790/what-is-the-best-way-to-determine-应用程序根目录 – abatishchev

回答

5

如果你的意思是相对于你的可执行文件,您可以使用

string exeLocation = System.Reflection.Assembly.GetExecutingAssembly().CodeBase 

注意经常建议

System.Reflection.Assembly.GetExecutingAssembly().Location 

将获得其中的组件目前位于的路径,它可以是不同的例如如果阴影副本正在执行。

您可以使用

string exeDir = System.IO.Path.GetDirectoryName(exeLocation); 

获得可执行文件的目录。

如果你想找到一个文件,是在数据目录中的安装位置下方,你可以做

string dataFile = Path.Combine(exeDir, "data\settings.xml"); 

需要注意的是在Windows Vista和更高版本,你不会有访问默认为安装目录下的目录。

+0

在我的情况下,我的数据目录不在我的exe目录下 – Xaisoft

+0

那么你希望Data目录是相对*到*? –

+0

我将构建操作更改为内容并复制文件(如果更新),所以我现在使用的是exe目录路径。 – Xaisoft

0

您还可以得到相对于当前目录是从

System.Environment.CurrentDirectory 
+3

当前目录可以更改(例如,通过使用文件对话框)。这种解决方案只能是偶然的,而不是原则性的。 – usr

+0

仅仅因为它的改变并不意味着不是所期望的。 – AlSki