获取文件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#的相对路径的主要内容,如果未能解决你的问题,请参考以下文章