powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Application.GetResourceStream - только в WPF ?
17 сообщений из 17, страница 1 из 1
Application.GetResourceStream - только в WPF ?
    #38610074
NTierNoob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет.

Пишу Win-службу. В итоге будет EXE + DLL(рабочий код).

Подскажите, можно ли включить в них (желательно в DLL) текстовый файл в ресурсы ?

Знаю про метод Application.GetResourceStream. Но он вроде бы относится к WPF.

Мне нужно подключить библиотеку PresentationFramework.dll, чтобы использовать данный метод ?

PS. В DLL можно ресурсы хранить ?
...
Рейтинг: 0 / 0
Application.GetResourceStream - только в WPF ?
    #38610139
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NTierNoob,
1) В ресурсы можно включать всё что угодно;
2) Ресурсы можно использовать/хранить в любом .NET приложении
3) Для работы с ресурсами есть класс ResourceManager из сборки mscorlib
...
Рейтинг: 0 / 0
Application.GetResourceStream - только в WPF ?
    #38610147
NTierNoob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не понимаю :)

использую Visual Studio 2010.

Добавляю простой текстовый файл к проекту.
Выставляю ему свойство "Действие при построении" - Resource (пробовал и Embbeded Resource - в чем разница ?)

Затем пишу такой код:
string[] names = this.GetType().Assembly.GetManifestResourceNames();

Почему-то массив пуст.
...
Рейтинг: 0 / 0
Application.GetResourceStream - только в WPF ?
    #38610152
NTierNoob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Использую эту инструкцию

http://support.microsoft.com/kb/319292
...
Рейтинг: 0 / 0
Application.GetResourceStream - только в WPF ?
    #38610161
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Application.GetResourceStream - только в WPF ?
    #38610176
NTierNoob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Алексей К,

Чтобы файл сделать встроенным ресурсом нужно использовать отдельную программу ? И все это будет отдельным файлом потом ?
Можно обойти без отдельных файлов ? Мне хотелось как раз убрать 1 файл в саму сборку. А тут получится просто появится другой файл. Этак мне проще оставлять текстовый файл как есть.

Просто в WPF это делается проще, без дополнительных программ, постым выставлением свойства "Действия при компиляции = Ресурс". После чего все интегрируется в сам EXE.

Почему в WPF это делается так просто, а в обычном NET приложении так сложно ?
...
Рейтинг: 0 / 0
Application.GetResourceStream - только в WPF ?
    #38610194
NTierNoob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Алексей К,

Прошу прощения. Добавляю существующий файл в ресурсы - но его свойство Rersistence нельзя изменить почему то. Стоит "скомпоновано во время компиляции". А нужно изменить на встроенный ресурс.

Подскажите пожалуйста, что за странность ?
...
Рейтинг: 0 / 0
Application.GetResourceStream - только в WPF ?
    #38610212
NTierNoob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот тут человек описывает ту же проблему
http://stackoverflow.com/questions/10074126/how-can-i-change-visual-studio-2008-solution-resources-to-be-linked-and-not-embe

Забавно. Ему порекомендовали так и оставить (файл, как присоединенный ресурс). Его это устроило.
А вот мне не нравится.

Люди. Подскажите пожалуйста. Что за фигня с этими ресурсами ? Что за сложности ? Что я делаю не так ?
У Вас у всех так, или это только у меня это свойство заблокировано ?

Грустно :(
...
Рейтинг: 0 / 0
Application.GetResourceStream - только в WPF ?
    #38610256
NTierNoob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может быть какое-то обучающее видео есть ?
...
Рейтинг: 0 / 0
Application.GetResourceStream - только в WPF ?
    #38610274
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну в свойствах проекта есть вкладка "Resources". На ней дизайнер "дефолтных" ресурсов проекта, управляющий подсоединением и кодогенерацией доступа к ресурсам. Там всё делается мышью, "как в Делфи".
...
Рейтинг: 0 / 0
Application.GetResourceStream - только в WPF ?
    #38610319
NTierNoob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Заработало.

При добавлении ресурса - создается папка Resources и туда добавляется файл. ТАМ удается выставить свойство "Embedded Resource".

ЮзерФрендли на высоте.
Ну... Не мне судить.

Готов писать многотомник "как добавить файл в ресурсы" :)
...
Рейтинг: 0 / 0
Application.GetResourceStream - только в WPF ?
    #38610336
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NTierNoobЗаработало.

При добавлении ресурса - создается папка Resources и туда добавляется файл. ТАМ удается выставить свойство "Embedded Resource".

ЮзерФрендли на высоте.
Ну... Не мне судить.

Готов писать многотомник "как добавить файл в ресурсы" :)
При работе с дизайнером ресурсов никаких свойств файлов выставлять не надо. Во вкладке дизайнера нажать Add Resource -> Add Existing File (если раскрывать меню кнопки), или сразу нажать Add Resource, выбрать файл - на этом всё. После этого обращение к ресурсу делается как
Код: c#
1.
var res = Properties.Resources.MyResourceName;
...
Рейтинг: 0 / 0
Application.GetResourceStream - только в WPF ?
    #38610360
NTierNoob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сон Веры Павловны,

В этом случае файл добавляется по умолчанию как "связанный". Т.е. добавляется лишь ссылка на него.

Я же хотел добится, чтобы файл был интегрирован в EXE.

Чтобы увидеть проблему - добавьте в ресурсы картинку (Добавить ресурс - Добавить новый BMP).
Там есть свойство Persistence - и по умолчанию оно выставлено в "связанный ресурс". Но его можно переключить в Embedded Resource.

Что меня сейчас злило последний час, так это то, что это свойство можно редактировать у добавляемых Изображений (как написано в различных инструкциях, которые нашел в интернете). Но в тоже время у добавленного текстового файла это свойство было заблокировано.

Т.е. в инструкции все работает - а я не мог сделать того, что написано в инструкции.

Вот сами посмотрите:
http://msdn.microsoft.com/ru-ru/library/ht9h2dk8(v=vs.90).aspx
"Связанные ресурсы можно изменить на внедренные, путем изменения свойства Persistence для файла ресурсов"

Практическое руководство. Создание внедренных ресурсов
http://msdn.microsoft.com/ru-ru/library/e2c9s1d7(v=vs.90).aspx
"В окне Свойства выберите свойство Cохраняемость и измените его на Внедренный в RESX."

А потом попробуйте выполнить эту инструкцию, только не с Изображением а с текстовым файлом.. Хорошая шутка получается.


Решением оказалось выставление этого свойства у файла, если файл выбрать в созданной папке Resources... Ну вот не знал я этого, и бился час, как бабочка об лампочку.


А ведь как это все просто делается в WPF :) Ээх.
...
Рейтинг: 0 / 0
Application.GetResourceStream - только в WPF ?
    #38610405
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NTierNoobА потом попробуйте выполнить эту инструкцию, только не с Изображением а с текстовым файлом.
Я это делал несчетное количество раз - хранение sql-скриптов, xsl-шаблонов, xsd-схем, и проч. Именно так, как я написал выше. Без всяких ссылок, именно внедрением в exe. По умолчанию у ресурса Persistense = Linked at compile time, и я не помню, чтобы я когда-либо менял это. Тестовый проект в аттаче.
...
Рейтинг: 0 / 0
Application.GetResourceStream - только в WPF ?
    #38610425
NTierNoob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сон Веры Павловны,

Я понимаю. Может быть связанные файлы тоже интегрируются в EXE. Тогда я не знаю в чем вообще разница.

Я задачку то свою уже решил :) Просто изначально посчитав, что мне нужно именно Embedded ресурс, пытался добится этого по инструкции.

В общем спасибо за помощь.
...
Рейтинг: 0 / 0
Application.GetResourceStream - только в WPF ?
    #38610440
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NTierNoobТогда я не знаю в чем вообще разница.
Хелп нужно читать внимательнее и вдумчивее:
Linked resources are stored as files in the project; during compilation the resource data is taken from the files and added to the manifest for the application. The application's resource file (.resx) stores only a relative path or link to the file on disk.
With embedded resources, the resource data is stored directly in the .resx file in a text representation of the binary data. In either case, the resource data is compiled into the executable file.
http://msdn.microsoft.com/en-us/library/vstudio/ht9h2dk8(v=vs.100).aspx
Вот кусок resx-файла, когда у ресурса Persistense = Linked at compile time:
Код: xml
1.
2.
3.
<data name="jr" type="System.Resources.ResXFileRef, System.Windows.Forms">
  <value>..\jr.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>


он же, когда Persistense = Embedded:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
<data name="jr" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
  <value>
        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
        YQUAAAB8SURBVDhPpYwBDsAgCAP5/6edMKolQ9SM5LC2VWlNfjGFHhRUcDc1d3DXLgBhxaeDn0AIEz79
        Ifpxw/IDntrTZcrFCObUni5TLjw45egDTJ7pMuXCAwaTZ7pMRVBYkfRjOLXdEt23a0MNmBzGR6z79vN1
        Icjcwd0Q3CPyAMcbtliuGiVZAAAAAElFTkSuQmCC
</value>
</data>


Второй вариант просто избавляет от необходимости держать исходные файлы ресурса в проекте. Но лично я всегда все файлы ресурсов держу в проекте. Это, например, позволяет подхватывать изменения в файлах ресурсов сразу при компиляции без каких-либо доп. операций с дизайнером ресурсов. И в любом случае, как написано выше, после компиляции ресурсы будут "внутри" сборки.
...
Рейтинг: 0 / 0
Application.GetResourceStream - только в WPF ?
    #38610468
NTierNoob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сон Веры Павловны,

ок. Спасибо. Наверное переделаю файл назад, на "присоединенный".
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Application.GetResourceStream - только в WPF ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]