c# wpf 相对路径问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# wpf 相对路径问题相关的知识,希望对你有一定的参考价值。

using (ExcelHelper excelHelper = new ExcelHelper(@"D:\studentcourse.xls"))

一开始我把studentcourse.xls放在d盘读取

现在我把它放在文件名为abc的文件夹内,怎么把地址改为相对地址

参考技术A xaml调用cs一般是在cs里面定义属性,然后xaml的属性绑定到后台,此时一般需要设置datacontext。cs调用xaml最简单的是xaml里定义控件名,后台可以直接引用。不过MVVM模式不提倡cs调用xaml,通过一系列的绑定可以解决这个问题。 参考技术B string file = Path.Combine(Environment.CurrentDirectory, @"studentcourse.xls");

本回答被提问者采纳

获取文件C#的相对路径

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

在WPF里面如何引用相对路径(非资源)?

WPF 应用程序 mp3 声音文件的相对路径

获取文件C#的相对路径

wpf image控件 绑定本地磁盘的图片 绝对路径的应该怎么写

C# 中是不是存在一种方法来获取给定两个绝对路径输入的相对路径? [复制]

WPF Image Source 设置相对路径图片