【问题标题】:relative paths (cant figure out)相对路径(无法弄清楚)
【发布时间】:2013-05-09 08:56:12
【问题描述】:

我在某个位置有一张图片

C:\Users\ali\Desktop\Folder\bin\Customer\latest\data\help\pic.png";

我想在位于的文件中使用此图像

C:\Users\ali\Desktop\Folder\Tab\User\Configuration\file.cs";

如果我在 file.cs 中使用 pic.png 的绝对路径,我可以访问该图像。但我想在file.cs中使用图像的相对路径。

如何计算 pic.png 的相对路径 到 file.cs

ps:我已经查看了链接 stackoverflow.com/questions/9065089/calculate-relative-filepath

它对我不起作用。如果有人能回答这个问题,那就太好了

【问题讨论】:

    标签: c# relative-path


    【解决方案1】:

    这样的?

    "..\..\..\bin\Customer\latest\data\help\pic.png"
    

    【讨论】:

      【解决方案2】:

      先去掉路径中相同的部分:

      bin\Customer\latest\data\help\pic.png
      

      如果你在当前路径上做同样的事情,你会留下三个层次Tab\User\Configuration,所以你需要走下三个层次才能到达路径交汇点:

      ..\..\..\bin\Customer\latest\data\help\pic.png
      

      【讨论】:

        【解决方案3】:

        这是不可能的。一旦代码被编译(它必须是,为了执行它),它就没有你的.cs文件的概念。它们包含的所有代码都被编译成可执行文件。它没有单独保存,并且可执行文件在编译时不知道 .cs 文件曾经存储在磁盘上的什么位置。

        相对路径相对于可执行文件的工作目录起作用。默认情况下,已编译的可执行文件被放置在 bin 文件夹中,并由调试器使用此位置作为工作目录执行,因此您的 pic.png 文件也需要位于该位置。

        要自动执行此操作,请将您的 pic.png 文件添加到您的项目中,然后将其“复制到输出目录”属性设置为“true”。这将导致编译器自动将映像文件复制到与编译的可执行文件相同的目录中。然后您可以使用相对于您的应用程序目录的路径,如下所示:

        string loadPath = Path.Combine(Path.Combine(typeof(MyClass).Assembly, "pic.png");
        

        更好的是,将图像作为资源直接嵌入到您的项目中,这样您就不需要分发单独的图像文件或使用脆弱的路径。

        【讨论】:

          【解决方案4】:

          您是否想要来自 file.cs 的相对路径。 File.cs 只是一个代码文件。一个带有文本的文件,仅此而已。该文件无法访问图片。还是您在该文件中有代码并且该代码用于访问图片?

          如果您是在谈论从 file.cs 到您的图片的相对路径。您正在谈论从 EXE 文件到图像的相对路径。在这种情况下,您必须知道编译器在编译期间将您的图像放在哪里。

          如果图像不是项目的一部分,而只是您计算机上某个位置的文件。我建议您在 app.config 中使用该图片的绝对路径进行配置设置。

          【讨论】:

            猜你喜欢
            • 2013-05-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-08-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多