Относительный путь к App.config - PullRequest
6 голосов
/ 26 августа 2009

У меня есть папка «Иконки». Мне нужно получить доступ к тому же, чтобы добавить значок к imageList. Я использую файл app.config, в котором есть относительный путь.

<add key="doc" value="..\Icons\_Microsoft Office Excel 97-2003 Worksheet.ico" />

и я использую код ниже, чтобы добавить его к imgList, однако он выдает System.IO.FileNotFoundException:

smallImageList.Images.Add(Image.FromFile(ConfigurationSettings.AppSettings["doc"]));

В чем здесь проблема?

Ответы [ 5 ]

7 голосов
/ 26 августа 2009

Попробуйте добавить текущий рабочий путь:

smallImageList.Images.Add(Image.FromFile(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, ConfigurationSettings.AppSettings["doc"])));
2 голосов
/ 06 июня 2013

Перейдите в свойства, найдите свойство «Копировать в выходной каталог» и выберите «Копировать всегда». Тогда должно быть хорошо. Надеюсь, это поможет.

2 голосов
/ 26 августа 2009

Возможно, вам потребуется объединить это с System.AppDomain.CurrentDomain.BaseDirectory.

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

.
0 голосов
/ 26 августа 2009

Ваша рабочая папка была каким-то образом изменена во время выполнения вашей программы, вы должны найти свой собственный путь.

Попробуйте это:

using System.Reflection;
string CurrDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

smallImageList.Images.Add(Image.FromFile(Path.Combine(CurrDirectory,ConfigurationSettings.AppSettings["doc"])));
0 голосов
/ 26 августа 2009

Попробуйте использовать тильду ...

value="~\Icons_Microsoft Office Excel 97-2003 Worksheet.ico"

Который должен запускать вас из корня приложения.

...