Я пытаюсь получить путь к файлу изображения, который я добавил в обозреватель решений в Visual Studio, но мне не удалось получить относительный путь к этому изображению. H - файловая структура моего проекта:
/ BulutDepoProject / FolderIcon Folder.ico Main.cs
Я могу получить вот такое изображение:
"C:\\Users\\Tolga\\Desktop\\BulutDepo\\BulutDepoProject\\FolderIcon\\Folder.ico"
Но я должен получить это примерно так:
"~\\FolderIcon\\Folder.ico"
Думаю, я не знаю точного синтаксиса, поэтому не могу получить изображение. :(
c#
visual-studio
Толга Евсимен
источник
источник
Ответы:
Если вы хотите использовать какой-либо внешний файл, то, безусловно, есть способ поместить их в папку в вашем проекте, но не такой эффективный, как получение их из ресурсов. В обычном проекте Visual Studio у вас должен быть
Resources.resx
файл вProperties
разделе, если нет, вы можете легко добавить свой собственныйResource.resx
файл. И добавьте в него любой тип файла, вы можете найти пошаговое руководство по добавлению файлов ресурсов в свой проект здесь .После того, как в вашем проекте есть файлы ресурсов, вызвать их очень просто:
var myIcon = Resources.MyIconFile;
Конечно, вы должны добавить такую
using Properties
инструкцию:using <namespace>.Properties;
источник
readonly
любом случае будет , так что ....Я немного опоздал и не уверен, что это то, что вы ищете, но я подумал, что добавлю его на случай, если кто-то сочтет это полезным.
Предположим, это ваша файловая структура:
Вам нужно указать свой путь относительно
Main.exe
файла. Итак, вы хотите получить доступFolder.ico
, в своемMain.cs
вы можете использовать:String path = "..\\FolderIcon\\Folder.ico"
Похоже, это сработало для меня!
источник
string path = ".\\FileName.txt"
<Project>/Debug
следовательно, работает в среде VS Debug. Но если вы выйдете из среды IDE ... или запустите EXE из другого рабочего каталога, он обязательно сломается.Опустите "~ \":
var path = @"FolderIcon\Folder.ico";
~\
ничего не значит с точки зрения файловой системы. Единственное место, которое я видел правильно, - это веб-приложение, где ASP.NET заменяет тильду абсолютным путем к корню приложения.Обычно можно предположить, что пути указаны относительно папки, в которой находится EXE. Кроме того, убедитесь, что изображение указано как «содержимое» и «копировать, если новее» / «копировать всегда» на вкладке свойств в Visual Studio.
источник
Я также столкнулся с той же проблемой, и я смог ее решить. Итак, позвольте мне объяснить шаги, которые я применил. Я объясню это по вашему сценарию.
Согласно моему методу, нам нужно использовать класс «Путь» и класс «Сборка», чтобы получить относительный путь.
Итак, сначала импортируйте System.IO и System.Reflection в операторы using.
Затем введите приведенную ниже строку кода.
var outPutDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly(). CodeBase);
На самом деле в приведенной выше строке хранится путь к выходному каталогу вашего проекта (здесь выходной каталог относится к папке Debug вашего проекта).
Теперь скопируйте каталог FolderIcon в папку Debug. Затем введите приведенную ниже строку.
var iconPath = Path.Combine(outPutDirectory, "FolderIcon\\Folder.ico");
Теперь эта переменная iconPath содержит весь путь к вашему Folder.ico. Все, что вам нужно сделать, это сохранить его в строковой переменной. Используйте для этого строку кода ниже.
string icon_path = new Uri(iconPath ).LocalPath;
Теперь вы можете использовать эту строковую переменную icon_path в качестве относительного пути к значку.
Благодарю.
источник
file:
перед тропойAssembly.GetExecutingAssembly().Location
если уверены, что имеете дело с файлом (EXE / DLL)Я думаю использовать это будет проще всего
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(); }
источник
В Visual Studio щелкните файл «Folder.ico» на панели «Обозреватель решений». Затем вы увидите панель «Свойства». Измените поведение «Копировать в выходной каталог» на «Копировать, если новее». Это заставит Visual Studio скопировать файл в каталог выходного лотка.
Теперь, чтобы получить путь к файлу с использованием относительного пути, просто введите:
string pathToIcoFile = AppDomain.CurrentDomain.BaseDirectory + "//FolderIcon//Folder.ico";
Надеюсь, это помогло.
источник