如何在visual studio中获取文件的相对路径?

时间:2012-11-12 10:33:33

标签: c# visual-studio

我正在尝试获取我在Visual Studio中的解决方案资源管理器中添加的图像文件的路径,但我无法获得该图像的相对路径。 H是我项目的文件结构:

/BulutDepoProject
    /FolderIcon
        Folder.ico
        Main.cs

我可以得到这样的图像:

"C:\\Users\\Tolga\\Desktop\\BulutDepo\\BulutDepoProject\\FolderIcon\\Folder.ico" 

但我应该能够得到类似的东西:

"~\\FolderIcon\\Folder.ico"

我想我不知道它的确切语法,所以我无法获取图像。 :(

6 个答案:

答案 0 :(得分:45)

如果您想使用任何类型的外部文件,肯定有办法将它们放在项目中的文件夹中,但不如从资源中获取它们那样有效。在常规的Visual Studio项目中,您应该在Resources.resx部分下有一个Properties文件,否则,您可以轻松添加自己的Resource.resx文件。并在其中添加任何类型的文件,您可以通过演练将资源文件添加到项目here

在项目中拥有资源文件后,调用它们很容易:

var myIcon = Resources.MyIconFile;

当然你应该像这样添加using Properties语句:

using <namespace>.Properties;

答案 1 :(得分:31)

我有点晚了,我不确定这是不是你要找的东西,但我想我会添加它以防其他人觉得它有用。

假设这是您的文件结构:

/BulutDepoProject
    /bin
        Main.exe
    /FolderIcon
        Folder.ico
        Main.cs

您需要编写相对于Main.exe文件的路径。因此,您想要访问Folder.ico中的Main.cs,您可以使用:

String path = "..\\FolderIcon\\Folder.ico"

这似乎对我有用!

答案 2 :(得分:19)

省略“〜\”:

var path = @"FolderIcon\Folder.ico";

~\对文件系统没有任何意义。我见过的唯一正确使用的地方是在一个Web应用程序中,ASP.NET用代替应用程序根目录的绝对路径替换代字号。

您通常可以假设路径相对于EXE所在的文件夹。此外,请确保在Visual Studio的属性选项卡中将图像指定为“content”和“copy if new”/“always always”。

答案 3 :(得分:12)

我也遇到了同样的问题,我能够完成它。那么让我解释一下我应用的步骤。我将根据你的情况解释一下。

根据我的方法,我们需要使用'Path'类和'Assembly'类来获取相对路径。

首先在using语句中导入System.IO和System.Reflection。

然后输入下面给出的代码行。

        var outPutDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly(). CodeBase);

实际上,上面给定的行存储了项目输出目录的路径。(这里'output'目录指的是项​​目的 Debug 文件夹)。

现在将FolderIcon目录复制到Debug文件夹中。然后键入下面给定的行。

var iconPath = Path.Combine(outPutDirectory, "FolderIcon\\Folder.ico");

现在这个'iconPath'变量包含Folder.ico的整个路径。您所要做的就是将其存储在字符串变量中。请使用下面的代码行。

string icon_path = new Uri(iconPath ).LocalPath;

现在您可以使用此icon_path字符串变量作为图标的相对路径。

感谢。

答案 4 :(得分:3)

我认为使用它将是最简单的

new Uri("pack://application:,,/FolderIcon/" + youImageICO);

或者此代码适用于任何计算机,如果您的文件夹位于您的根项目中,如果您想要更改它...只需更改此部分@“.. \”

public static string bingPathToAppDir(string localPath)
{
    string currentDir = Environment.CurrentDirectory;
    DirectoryInfo directory = new DirectoryInfo(
        Path.GetFullPath(Path.Combine(currentDir, @"..\..\" + localPath)));
    return directory.ToString();
}

答案 5 :(得分:2)

在Visual Studio中,请在“解决方案资源管理器”窗格中单击“ Folder.ico”文件。然后,您将看到“属性”窗格。将“复制到输出目录”行为更改为“如果更新则复制”。这将使Visual Studio将文件复制到输出bin目录。

现在要使用相对路径获取文件路径,只需键入:

string pathToIcoFile = AppDomain.CurrentDomain.BaseDirectory + "//FolderIcon//Folder.ico";

希望有帮助。