从当前项目中获取文件路径

get file path from current project

在我的 Visual Studio 控制台应用程序中,我的项目位于以下位置:

c:\MyProject\FilesToUpload\test.txt

我正在尝试使用以下代码访问此文件:

string path = Path.Combine(Environment.CurrentDirectory, @"FilesToUpload\", "test.txt");

但是这条路 returns: c:\MyProject\bin\debug\net461\FilesToUpload\test.txt

我想得到的路径是:c:\MyProject\FilesToUpload\test.txt

"Environment.CurrentDirectory" return 正确路径。您的应用程序是一个 "exe" 文件,但不是源文件。它从编译输出目录运行。您不需要从 "c:\MyProject\FilesToUpload\test.txt" 获取文件,但您需要将 "test.txt" 的 "Copy to Output Directory" 属性 更改为 "Copy Always"。

Environment.CurrentDirectory 将 return 您的程序当前 运行 所在的路径。您需要做的是决定以下其中一项:

  • 该路径与目录之间的关系 "FilesToUpload"。
  • 硬编码路径,例如c:\MyProject\FilesToUpload\
  • 一个可配置的路径,然后您可以在您的应用程序中指定和读取该路径。 就我个人而言,我更喜欢此选项,因为它不会取决于您 运行 应用程序的来源。

在第一种情况下,你可以使用这样的东西:

var relation = @"..\..\..\FilesToUpload\";
var currPath = Path.Combine(Environment.CurrentDirectory, relation, "test.txt");

更新/澄清:

对于第一个选项,在你的情况下(你的例子),使用相对路径应该有效地改变你的 returned 路径:

c:\MyProject\bin\debug\net461\FilesToUpload\test.txt

收件人:

c:\MyProject\bin\debug\net461\..\..\..\FilesToUpload\test.txt

试一试,看看效果如何 - 如果路径不完全正确,您应该能够找到调整方法。