Чтение текстового файла в Windows 8

У меня возникли проблемы с чтением встроенного ресурса (текстового файла) в windows-8, обычно я использую Assembly.GetExecutingAssembly(), но я не могу сделать это в этом. Я ссылаюсь на пространство имен System.Reflection, но оно говорит, что не может найти, думая, что оно, возможно, было удалено.

Есть идеи?

В настоящее время используется Windows 8 Consumer Preview

Код: Assembly readAssembly = Assembly.GetExecutingAssembly(); StreamReader streamReader = new StreamReader(readAssembly.GetManifestResourceStream("Test.txt"));

Ошибка: System.Reflection.Assembly не содержит определения для GetExecutingAssembly.


person supergeek1982    schedule 10.03.2012    source источник
comment
Возможный дубликат [Как читать встроенный текстовый файл ресурсов][1] [1]: stackoverflow.com/questions/3314140/   -  person Coder    schedule 10.03.2012
comment
@supergeek, в чем проблема с GetExecutingAssembly()? Он возвращает null? Выдает ли это исключение? Это плюет в ваши Cheerios?   -  person Frédéric Hamidi    schedule 10.03.2012
comment
Он говорит, что не может найти ссылку, хотя я определенно ссылаюсь на System.Reflection.. кажется, что он может быть удален, чтобы работать так, как что-то вроде support.microsoft.com/kb/319292 делает   -  person supergeek1982    schedule 10.03.2012
comment
Странно, документы говорят, что он поддерживается в Windows 8 Beta и Consumer Preview... Можете ли вы опубликовать точный код, вызывающий GetExecutingAssembly()?   -  person Frédéric Hamidi    schedule 10.03.2012
comment
Вы имеете в виду WinRT? Windows 8 вряд ли будет проблемой...   -  person Marc Gravell    schedule 10.03.2012
comment
@FrédéricHamidi Я полагаю, он имеет в виду WinRT, а не Windows 8   -  person Marc Gravell    schedule 10.03.2012
comment
@FrédéricHamidi обновил первый раздел с кодом. Я тоже подумал, что это странно, потому что в документах это упоминалось.   -  person supergeek1982    schedule 10.03.2012


Ответы (3)


В WinRT ресурсы должны быть включены в пакет. Вы используете Package.Current.InstalledLocation.GetFileAsync для чтения ресурса.

В следующем сообщении есть пример кода:
http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/d4b327e3-a8f2-4d3c-8ed7-ba2ea953d0b9

person Chris Taylor    schedule 10.03.2012
comment
Спасибо :) Совет для других: ищите WinRT вместо Windows 8, ха-ха - person supergeek1982; 18.03.2012

В библиотеках AppStore вы можете использовать следующий код:

Stream stream = this.GetType().GetTypeInfo().Assembly.GetManifestResourceStream(fileName);
person Pawel Lesnikowski    schedule 25.08.2012
comment
Спасибо, это именно то, что мне было нужно. Вы также можете узнать точное имя файла, увидев, что является частью вашей сборки: (при условии, что у вас есть сборка, как показано выше) string[] names = Assembly.GetManifestResourceNames(); - person Victor Chelaru; 13.09.2012

Почему бы вам не использовать метод ReadFileAsync(), доступный в VS 2012. Добавьте текстовый файл в свой проект и вызовите асинхронный метод.

person Apoorv    schedule 29.11.2012