获取文件C#的相对路径

Posted

技术标签:

【中文标题】获取文件C#的相对路径【英文标题】:Get relative Path of a file C# 【发布时间】:2017-04-21 01:02:11 【问题描述】:

我目前在 Visual Studio 中用 c# 编写一个项目。 项目完整路径为:

"C:\TFS\MySolution\"

我有一个文件需要在执行期间加载。假设文件路径是

"C:\TFS\MySolution\Project1\NeedtoLoad.xml"

我不想编写硬编码的完整路径,并希望以动态方式获取路径。

我使用以下行:

    var path = Directory.GetCurrentDirectory();

我发现的每个方法和上面的代码行都会让我找到以下路径:

"C:\TFS\MySolution\Project1\bin\Debug"

而我需要的是

"C:\TFS\MySolution\Project1\"

所以我可以连接

NeedtoLoad.xml

回答。

当然可以:

path.Substring(0, path.IndexOf("bin\\Debug"));

但它并不那么优雅。

【问题讨论】:

【参考方案1】:

您可以使用Directory.GetParent 及其Parent 成员

string path = Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName;

将沿着路径树向上走两级并返回"C:\TFS\MySolution\Project1"

【讨论】:

【参考方案2】:

如果 xml 是您项目的静态部分(您不会在运行时覆盖它),那么最好将其包含到您的 dll 中。

转到文件属性并将其设为嵌入式资源

只需从 dll 资源中加载它,例如

var asm = Assembly.GetCallingAssembly();
using (var stream = asm.GetManifestResourceStream(resource))

    var reader = new StreamReader(stream);
    return reader.ReadToEnd();

【讨论】:

【参考方案3】:

如果该文件是您项目的一部分,您应该确保在构建时将其复制到您的项目输出中。

在解决方案资源管理器中选择文件,然后转到 Visual Studio (F4) 中的属性窗格。选择“内容”作为“构建操作”。现在,当您构建解决方案时,该文件将被复制到输出目录(bin/Debug 或 bin/Release)。

【讨论】:

以上是关于获取文件C#的相对路径的主要内容,如果未能解决你的问题,请参考以下文章

C#中winform使用相对路径读取文件的方法

如何获取当前工作目录路径 c#?

C# 获取当前,相对,绝对路径

java如何获取文件的相对路径啊?

C# ,asp.net 获取当前,相对,绝对路径

WebAPI 怎样获取相对路径 获取本地路径