Как получить относительный путь к файлу в visual studio?
Я пытаюсь получить путь к файлу изображения, который я добавил в Обозреватель решений в Visual Studio, но я не мог получить относительный путь к этому изображению. H-это файловая структура моего проекта:
/BulutDepoProject
/FolderIcon
Folder.ico
Main.cs
Я могу получить изображение, как это :
"C:UsersTolgaDesktopBulutDepoBulutDepoProjectFolderIconFolder.ico"
но я должен быть в состоянии сделать что-то вроде :
"~FolderIconFolder.ico"
Я думаю, что я не знаю точный синтаксис этого, поэтому я не могу получить изображение. : (
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