C#如何派生位于祖父文件夹中的文件的相对文件路径?

我正在使用Visual Studio 2005(.NET版本> 2.0+)来创建Windows应用程序。

根据我的观察,文件的相对路径可以参考在DEBUG文件夹中创建的EXE文件给出。 示例:如果我将路径设为“images \ image.png”,则会加载文件夹“images”(位于DEBUG文件夹中)的文件。

我的问题是,如果文件存在于父文件夹中该怎么办? 假设..“DEBUG”驻留在“BIN”文件夹中,并且还有一个文件夹“IMAGES”,我必须在我的代码中指出。
(bin/images/image.png)

通过复制调试文件夹本身内部的“IMAGES”文件夹或通过给出绝对路径可以避免这种需要,但是..我想知道是否有任何方法可以指向相对路径中的父文件夹

不“……”工作? 在, ../../image.png

编辑以添加一些细节:根据MSDN ,“路径也称为相对,如果它包含”双点“;也就是说,路径的一个组件中的两个句点。这个特殊的说明符用于表示目录在当前目录之上,也称为“父目录”。“

其中两个’双点’会让你获得祖父文件夹,就像在我的例子中一样。

..是当前文件夹的父文件夹的别名。 举个例子,从’Debug’文件夹到’images’文件夹的路径是..\images

您可以使用以下代码来validation所说的内容:

 DirectoryInfo dir = new DirectoryInfo("../.."); String name = dir.FullName; 

使用..允许您向上移动目录树,然后您可以从该目录树向下导航到相应的子目录。

我强烈建议阅读CLR(运行时)如何定位依赖项? 以及.net中的探测

在应用程序的post build事件中,您可能希望打包代码,以便您可以创建诸如的文件夹

  1. 箱子
    | – >调试| – >发布
  2. 图片
  3. 等等…

一旦到位,您可以使用Debug或Release中的相​​对路径,例如../../ images / file等。