硬编码C#中的相对路径

时间:2013-02-10 11:08:34

标签: c#

我的项目文件夹外部有一个XML文件,我想从我的代码中访问它,以便在我将路径相对于项目目录的任何机器上执行代码。

让我们说我的当前目录位于文件夹A中,我要访问的文件位于A旁边的文件夹B中。

1 个答案:

答案 0 :(得分:4)

如果XML文件始终在您的应用程序文件夹中,您可以使用。

Environment.CurrentDirectory

工作路径可能不一定是可执行文件所在的位置。确保您可以使用以下MSDN

中的代码
string path;
path = System.IO.Path.GetDirectoryName( 
      System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase );

否则,如果它是Microsoft的特殊文件夹的一部分,例如.e.g MyDocuments,您可以使用。

Environment.SpecialFolder.MyDocuments

你可以这样使用它。

Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),
                                           "myfile.xml")

输出将是当前用户My Documents文件夹中myfile.xml的路径。就我而言,它会给我C:\Users\eandersson\Documents\myfile.xml

Path.Combine在这里非常有用,因为它允许我们将多个磁盘路径合并为一个。

修改评论请求的其他信息。

我认为最好的方法是使用Directory.GetParent

Directory.GetParent(Environment.CurrentDirectory).FullName

做这样的事情。

Path.Combine(Directory.GetParent(Environment.CurrentDirectory).FullName, "PathB", "myfile.xml")

这将在与项目文件夹相同的位置查找PathB。

C:\MyProjects\PathA\MyExecutable.exe
C:\MyProjects\PathB\myfile.xml

假设您从该位置开始运行MyExecutable.exe。上面的代码应该自动返回PathB中的第二个位置,文件为myfile.xml