Как получить путь к ресурсу? - PullRequest
1 голос
/ 04 августа 2011

Я включил встроенный ресурс в свой проект на C #; Я знаю его имя и как к нему обращаться, поэтому мне было интересно, есть ли способ получить его абсолютный путь ... есть?

Ответы [ 4 ]

5 голосов
/ 04 августа 2011

Встроенный ресурс это именно то, что: встроенный. Это означает, что он включен в сборку и не существует как физический файл после компиляции (если это то, что вы ищете).

2 голосов
/ 04 августа 2011

Как уже говорили другие, встроенный ресурс встроен в скомпилированную сборку и не существует в файловой системе; если вы хотите, чтобы файл находился в файловой системе, вы должны изменить действие сборки на «Нет», а «Копировать в выходной каталог» - на одно из значений копирования.

Если, однако, вы хотите встроить ресурс, то к нему можно получить доступ, используя метод GetManifestResourceStream класса Assembly следующим образом:

GetType().Assembly.GetManifestResourceStream("someresourcestringhere")

(Приведенный выше код предполагает, что вы обращаетесь к ресурсу из класса в той же сборке).

Встроенный ресурс обычно имеет следующий формат (все пробелы сохраняются), и это строка, которую вы передадите методу GetManifestResourceStream:

имя проекта по умолчанию. Имя папки. (Если есть). Имя файла

Лично я нашел, что самый простой способ получить эту строку - использовать инструмент декомпиляции (такой как Just Decompile от Telerik), чтобы заглянуть внутрь сборки и получить полное имя ресурса для искомого файла. 1012 *

1 голос
/ 04 августа 2011
System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceNames();
0 голосов
/ 04 августа 2011

Как насчет

Console.WriteLine(WindowsFormsApplication1.Properties.Resources.myfile);

где myfile - это встроенный INI-файл

...