【问题标题】:Get relative Path of a file C#获取文件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"));

但它并不那么优雅。

【问题讨论】:

    标签: c# path filepath relative-path


    【解决方案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)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-01-31
          • 2020-10-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-07-13
          • 2011-03-16
          • 2018-11-11
          相关资源
          最近更新 更多