2015-06-18 4 views
0

Я пытаюсь вставлять некоторые текстовые файлы в resouces моего приложения, но когда я пытаюсь получить его с помощью GetManifestResourceStream(), я получаю null. Я пробовал все эти комбинации имя:GetManifestResourceStream() return null

  • programName.Form1.foo.txt
  • programName.foo.txt
  • Form1.foo.txt
  • programName.Properties.Resources.resources.foo .txt

Некоторая информация:

Пространство имен programName и класс, где я звоню этот код сюда m = Form1 и имя файла resouce, которое я пытаюсь восстановить, равно foo.txt.

код:

var resourceName = string.Format("???.{0}", filename); 
var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName); 

Файл доступен с помощью Properties.Resources.foo, но, как я получить имя файла из строки, я не могу использовать его.

+0

Если вы не уверены, откройте свою программу с помощью il spy, отражателя или любого другого декомпилятора .net и найдите там подходящее имя ресурса. – Oscar

+0

@Oscar Кажется, текстовые файлы были помещены в 'programName.Properties.Resources.resources' не должны быть на' programName.Form1.resources' вместо? на последнем есть такие вещи, как значок и фон приложения. Я думаю, именно поэтому я получаю нуль – Jack

+0

Это зависит от того, как вы создали файл ресурсов. Попробуйте со значением, полученным при декомпиляции. – Oscar

ответ

3

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

Например, если создать папку «хх» в моем проекте WindowsFormsApplication1 и добавить файл «dictionary.txt», название будет WindowsFormsApplication1.xx.dictionary.txt

В любом случае просто используйте это, чтобы увидеть все ваши ресурсы.

var files = Assembly.GetExecutingAssembly().GetManifestResourceNames(); 
+0

Где я могу проверить, имеет ли значение action? – Jack

+0

Я проверил 'GetManifestResourceNames()' и он не содержит файлы, которые я добавил. Я предполагаю, что так я добавил его: Project -> Properties -> Resources -> Добавить существующий файл. – Jack

+0

Найти эту недвижимость! Необходимо сначала открыть файл. Я искал его в редакторе resouce. Переключитесь с «none» на «Embedded Resource», и это сработало – Jack