代码之家  ›  专栏  ›  技术社区  ›  Moon

如何使用相对路径访问项目目录中的文件,而不考虑可执行文件的位置?

  •  0
  • Moon  · 技术社区  · 6 年前

    在使用visualstudio运行我的项目时,工作目录( AppDomain.CurrentDomain.BaseDirectory )是 {ProjectDirectoryPath}\bin\Debug\netcoreapp2.0 ; 但是在从发布文件夹运行项目时(发布之后),工作目录是 {PublishDirectoryPath} {ProjectDirectoryPath} {PublishDirectoryPath} 在同一个树结构中。这意味着每当我使用visualstudio运行项目时,我都应该在每个文件的路径前面加上前缀 ../../../ .

    我当前的解决方案是在访问项目目录中的文件时使用以下函数:

    public static string Root()
    {
        string root = AppDomain.CurrentDomain.BaseDirectory;
        if (root.EndsWith("Debug\\netcoreapp2.0\\"))
            root = root + Slash("../../..");
        return root;
    }
    

    但是,我觉得必须有更好的方法来解决这个问题,因为使用位于项目目录下的文件并不是什么稀奇的事情(尽管在项目目录下存储配置和数据文件更常见) %AppData% /home ). 所以,这么多开发人员真的要为如此常见的东西实现这样的解决方案,这似乎是不对的。

    我错过了什么?

    2 回复  |  直到 6 年前
        1
  •  0
  •   Lews Therin    6 年前

    在配置文件中存储路径时,可以使用 web.config/app.config transforms 基于 build configurations . 这允许您根据部署到的环境为配置文件设置提供不同的值。

        2
  •  0
  •   Moon    6 年前

    经过几个小时的研究,我发布了这个问题。即使在发布后,我仍在继续寻找解决方案。我看到了很多关于这个问题的线索,还有很多在我的案例中不起作用的解决方案。现在我无意中发现 this ,我使用了第二种方法。使用这种解决方案,它的工作。