Как получить относительный путь к файлу в visual studio?



Я пытаюсь получить путь к файлу изображения, который я добавил в Обозреватель решений в Visual Studio, но я не мог получить относительный путь к этому изображению. H-это файловая структура моего проекта:




/BulutDepoProject
/FolderIcon
Folder.ico
Main.cs


Я могу получить изображение, как это :



"C:UsersTolgaDesktopBulutDepoBulutDepoProjectFolderIconFolder.ico" 


но я должен быть в состоянии сделать что-то вроде :



"~FolderIconFolder.ico"


Я думаю, что я не знаю точный синтаксис этого, поэтому я не могу получить изображение. : (

3933   5  

5 ответов:

когда вы хотите использовать какой-либо внешний файл, есть, конечно, способ поместить их в папку внутри вашего проекта, но не так действителен, как получение их из ресурсов. В обычном проекте Visual Studio, вы должны иметь под Properties раздел, если нет, вы можете легко добавить свой собственный . И добавьте в него любой файл, вы можете перейти к пошаговому руководству по добавлению файлов ресурсов в свой проект здесь.

после имея файлы ресурсов в вашем проекте, вызывать их легко следующим образом:

var myIcon = Resources.MyIconFile;

конечно, вы должны добавить using Properties оператор как это:

using <namespace>.Properties;

Я немного опоздал, и я не уверен, что это то, что вы ищете, но я подумал, что добавлю его на всякий случай, если кто-то еще найдет его полезным.

предположим, что это ваша файловая структура:

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

нужно написать свой путь относительно . Итак, вы хотите получить доступ Folder.ico в своем Main.cs вы можете использовать:

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

это, казалось, работало для меня!

опустить "~\":

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

~\ ничего не значит с точки зрения файловой системы. Единственное место, которое я видел, что правильно используется в веб-приложении, где ASP.NET заменяет Тильду абсолютным путем к корню приложения.

обычно можно предположить, что пути относятся к папке, в которой находится EXE. Кроме того, убедитесь, что изображение указано как "содержимое" и "копировать, если новее"/ "копировать всегда" на вкладке свойств в Visual Студия.

Я также встретил ту же проблему, и я был в состоянии получить его до конца. Поэтому позвольте мне объяснить шаги, которые я применил. Я объясню это по вашему сценарию.

согласно моему методу нам нужно использовать класс "Path" и класс "Assembly", чтобы получить относительный путь.

Итак, первый импорт System.IO и система.Отражение в использовании операторов.

введите приведенный ниже код.

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

на самом деле выше данной строки хранится путь выходной каталог вашего проекта.(Здесь каталог 'output' относится к Debug папка вашего проекта).

Теперь скопируйте каталог FolderIcon в папку отладки. Затем введите нижеприведенную строку.

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

Теперь эта переменная 'iconPath' содержит весь путь к вашей папке.ico. Теперь все, что вам нужно сделать, это хранить в строковой переменной. Используйте ниже данной строки для этого.

string icon_path = new Uri(iconPath ).LocalPath;

Теперь вы можете использовать эту строковую переменную icon_path в качестве ваш относительный путь к значку.

спасибо.

Я думаю, что с помощью этого будет легче

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();
}

Comments

    Ничего не найдено.