【问题标题】:C# - Relative path of classC# - 类的相对路径
【发布时间】:2018-08-19 15:55:04
【问题描述】:

试图获取配置文件的相对路径,它位于核心项目中的一个类旁边,并试图避免硬编码的相对路径(即“../../../seleniumconfig.json”)

这是我的项目结构,

  • Awesome.Core(库项目)
    • 硒(文件夹)
      • ZSelenium.cs
      • seleniumconfig.json(在此处需要它,因此只有高级用户才能访问此文件)
  • Awesome.OtherProject1(调用项目,引用 Awesome.Core)
    • Program.cs
  • Awesome.OtherProject2(另一个调用项目,引用 Awesome.Core)
    • Program.cs

Program.cs(在 Awesome.OtherProject1 中)

using (var scope = Container.BeginLifetimeScope())
{
    var selenium = scope.Resolve<ZSelenium>();
    ...
}

ZSelenium.cs

var rootDir = new DirectoryInfo(Environment.CurrentDirectory);
  // "/users/myuser/Documents/MyProject/AwesomeProject.OtherProject"

我可以从rootDir 变量构造我的相对路径,但是我想避免很多硬编码的../../.. 东西。另外,如果我从另一个项目调用ZSelenium.cs,则相对路径可能会改变。

有没有人知道在核心项目中获取ZSelenium.cs 路径的更好方法?

【问题讨论】:

  • 编译后,“ZSelenium.cs”不再存在,它将是应用程序运行的文件夹,因此您必须确保将“seleniumconfig.json”复制到输出正在运行的应用程序。所以:“ZSelenium.cs”的相对路径不是你想要的
  • @CamiloTerevinto 知道了!谢谢你:)

标签: c# path relative-path


【解决方案1】:

配置文件永远不属于 Programm 文件夹。无论如何,我们在 Windows 98 时代确实这样做了,但当时不受欢迎。由于 XP 不再可靠地编写这样的配置文件。 Programm 文件夹受到保护。出于安全原因,大多数用户只能读取它们,而不能写入它们。这也包括该用户启动的任何程序。

如果您想存储用户或系统特定的设置,这就是special folders 的用途。他们的一个明确目的是,无论用户运行您的程序,都应该拥有对他自己和所有共享文件夹的读取(并且可能是写入)访问权限。

您可以将“默认配置”添加到 Programm 目录以用作新用户的模式。但即便如此,也有一个现有结构(默认用户文件夹),因此您可以将模板留给安装程序。

【讨论】:

  • 知道了!谢谢你:)
猜你喜欢
  • 2015-04-13
  • 2011-06-15
  • 1970-01-01
  • 1970-01-01
  • 2015-03-26
  • 1970-01-01
  • 1970-01-01
  • 2013-04-26
相关资源
最近更新 更多