【问题标题】:WPF File association Relative PathWPF 文件关联相对路径
【发布时间】:2019-02-21 18:38:01
【问题描述】:

我最近为我的 WPF 应用程序添加了文件关联。一切正常,但我的 .exe 所在文件夹中的文件很少。在某些地方,我使用相对路径来访问这些文件。

当我单击我的 .eg(关联扩展名)文件并启动我的应用程序时。但是,当我尝试访问应用程序中相对于我的 exe 的文件夹中的文件时,相对路径会从 .eg 的位置显示。

我现在通过将它们更改为绝对路径来解决这个问题,但我很好奇为什么会发生这种情况,是否有更好的方法来解决这个问题。

【问题讨论】:

  • 获取路径/文件夹位置(有不同的方法可以做到这一点,一种独立于您的实际项目/prgram类型的方法是查询执行程序集的位置 - 执行程序)您的 exe 并将其与文件的 exe 相对路径一起使用以形成文件的绝对路径。
  • 当然谢谢。这就是我现在访问它的方式 Path.GetFullPath(System.AppDomain.CurrentDomain.BaseDirectory + "..\\image\\text.png");

标签: c# wpf


【解决方案1】:

你可以的

Environment.CurrentDirectory = System.AppDomain.CurrentDomain.BaseDirectory;

在您的App.xaml.cs 中(有多种方法可以模拟 WPF 中的 main() 方法,其中任何一种都可以)

在此之后,您使用的所有相对路径都将相对于您的主 exe 文件夹。

【讨论】:

  • 我在 App.xaml.cs 中厌倦了上面的行并得到了这个异常:[System.IO.IOException] = {System.IO.IOException: 目录名称无效。在 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) 在 System.IO.Directory.SetCurrentDirectory(String path) 在 System.Environment.set_CurrentDirectory(String value) 我从你的代码中得到了想法并尝试了这个:Environment.CurrentDirectory = System.AppDomain.CurrentDomain.BaseDirectory;它奏效了。谢谢
  • @PrimeOfKnights 嗯..有趣。基本目录应该给你相同的路径,也不确定为什么第一个不起作用。但很高兴它最终成功了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-28
  • 2011-10-18
  • 2012-01-28
  • 2021-12-02
  • 1970-01-01
相关资源
最近更新 更多