获取文件的相对路径?

Xai*_*oft 1 c# .net-4.0 linq-to-xml

我有一个名为settings.xml的文件位于:

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

现在,我正在做:

XDocument doc = XDocument.Load(@"c:\solution1\solution1\settings.xml");
Run Code Online (Sandbox Code Playgroud)

我无法想象如何用相对路径来做.

Eri*_* J. 5

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

string exeLocation = System.Reflection.Assembly.GetExecutingAssembly().CodeBase
Run Code Online (Sandbox Code Playgroud)

注意经常建议的

System.Reflection.Assembly.GetExecutingAssembly().Location
Run Code Online (Sandbox Code Playgroud)

将获得程序集当前所在的路径,例如,如果正在执行卷影副本,则该路径可能不同.

您可以使用

string exeDir = System.IO.Path.GetDirectoryName(exeLocation);
Run Code Online (Sandbox Code Playgroud)

获取可执行文件的目录.

如果要查找安装位置下的数据目录中的文件,可以执行此操作

string dataFile = Path.Combine(exeDir, "data\settings.xml");
Run Code Online (Sandbox Code Playgroud)

请注意,在Windows Vista及更高版本中,默认情况下您不会对位于安装目录下的目录具有访问权限.