|
Application.GetResourceStream - только в WPF ?
|
|||
---|---|---|---|
#18+
Привет. Пишу Win-службу. В итоге будет EXE + DLL(рабочий код). Подскажите, можно ли включить в них (желательно в DLL) текстовый файл в ресурсы ? Знаю про метод Application.GetResourceStream. Но он вроде бы относится к WPF. Мне нужно подключить библиотеку PresentationFramework.dll, чтобы использовать данный метод ? PS. В DLL можно ресурсы хранить ? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2014, 15:33 |
|
Application.GetResourceStream - только в WPF ?
|
|||
---|---|---|---|
#18+
NTierNoob, 1) В ресурсы можно включать всё что угодно; 2) Ресурсы можно использовать/хранить в любом .NET приложении 3) Для работы с ресурсами есть класс ResourceManager из сборки mscorlib ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2014, 15:58 |
|
Application.GetResourceStream - только в WPF ?
|
|||
---|---|---|---|
#18+
Не понимаю :) использую Visual Studio 2010. Добавляю простой текстовый файл к проекту. Выставляю ему свойство "Действие при построении" - Resource (пробовал и Embbeded Resource - в чем разница ?) Затем пишу такой код: string[] names = this.GetType().Assembly.GetManifestResourceNames(); Почему-то массив пуст. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2014, 16:01 |
|
Application.GetResourceStream - только в WPF ?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2014, 16:03 |
|
Application.GetResourceStream - только в WPF ?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2014, 16:06 |
|
Application.GetResourceStream - только в WPF ?
|
|||
---|---|---|---|
#18+
Алексей К, Чтобы файл сделать встроенным ресурсом нужно использовать отдельную программу ? И все это будет отдельным файлом потом ? Можно обойти без отдельных файлов ? Мне хотелось как раз убрать 1 файл в саму сборку. А тут получится просто появится другой файл. Этак мне проще оставлять текстовый файл как есть. Просто в WPF это делается проще, без дополнительных программ, постым выставлением свойства "Действия при компиляции = Ресурс". После чего все интегрируется в сам EXE. Почему в WPF это делается так просто, а в обычном NET приложении так сложно ? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2014, 16:15 |
|
Application.GetResourceStream - только в WPF ?
|
|||
---|---|---|---|
#18+
Алексей К, Прошу прощения. Добавляю существующий файл в ресурсы - но его свойство Rersistence нельзя изменить почему то. Стоит "скомпоновано во время компиляции". А нужно изменить на встроенный ресурс. Подскажите пожалуйста, что за странность ? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2014, 16:25 |
|
Application.GetResourceStream - только в WPF ?
|
|||
---|---|---|---|
#18+
Вот тут человек описывает ту же проблему http://stackoverflow.com/questions/10074126/how-can-i-change-visual-studio-2008-solution-resources-to-be-linked-and-not-embe Забавно. Ему порекомендовали так и оставить (файл, как присоединенный ресурс). Его это устроило. А вот мне не нравится. Люди. Подскажите пожалуйста. Что за фигня с этими ресурсами ? Что за сложности ? Что я делаю не так ? У Вас у всех так, или это только у меня это свойство заблокировано ? Грустно :( ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2014, 16:34 |
|
Application.GetResourceStream - только в WPF ?
|
|||
---|---|---|---|
#18+
Может быть какое-то обучающее видео есть ? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2014, 17:02 |
|
Application.GetResourceStream - только в WPF ?
|
|||
---|---|---|---|
#18+
Ну в свойствах проекта есть вкладка "Resources". На ней дизайнер "дефолтных" ресурсов проекта, управляющий подсоединением и кодогенерацией доступа к ресурсам. Там всё делается мышью, "как в Делфи". ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2014, 17:08 |
|
Application.GetResourceStream - только в WPF ?
|
|||
---|---|---|---|
#18+
Заработало. При добавлении ресурса - создается папка Resources и туда добавляется файл. ТАМ удается выставить свойство "Embedded Resource". ЮзерФрендли на высоте. Ну... Не мне судить. Готов писать многотомник "как добавить файл в ресурсы" :) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2014, 17:41 |
|
Application.GetResourceStream - только в WPF ?
|
|||
---|---|---|---|
#18+
NTierNoobЗаработало. При добавлении ресурса - создается папка Resources и туда добавляется файл. ТАМ удается выставить свойство "Embedded Resource". ЮзерФрендли на высоте. Ну... Не мне судить. Готов писать многотомник "как добавить файл в ресурсы" :) При работе с дизайнером ресурсов никаких свойств файлов выставлять не надо. Во вкладке дизайнера нажать Add Resource -> Add Existing File (если раскрывать меню кнопки), или сразу нажать Add Resource, выбрать файл - на этом всё. После этого обращение к ресурсу делается как Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2014, 18:00 |
|
Application.GetResourceStream - только в WPF ?
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, В этом случае файл добавляется по умолчанию как "связанный". Т.е. добавляется лишь ссылка на него. Я же хотел добится, чтобы файл был интегрирован в 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 :) Ээх. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2014, 18:22 |
|
Application.GetResourceStream - только в WPF ?
|
|||
---|---|---|---|
#18+
NTierNoobА потом попробуйте выполнить эту инструкцию, только не с Изображением а с текстовым файлом. Я это делал несчетное количество раз - хранение sql-скриптов, xsl-шаблонов, xsd-схем, и проч. Именно так, как я написал выше. Без всяких ссылок, именно внедрением в exe. По умолчанию у ресурса Persistense = Linked at compile time, и я не помню, чтобы я когда-либо менял это. Тестовый проект в аттаче. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2014, 19:12 |
|
Application.GetResourceStream - только в WPF ?
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, Я понимаю. Может быть связанные файлы тоже интегрируются в EXE. Тогда я не знаю в чем вообще разница. Я задачку то свою уже решил :) Просто изначально посчитав, что мне нужно именно Embedded ресурс, пытался добится этого по инструкции. В общем спасибо за помощь. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2014, 19:39 |
|
Application.GetResourceStream - только в WPF ?
|
|||
---|---|---|---|
#18+
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.
он же, когда Persistense = Embedded: Код: xml 1. 2. 3. 4. 5. 6. 7. 8.
Второй вариант просто избавляет от необходимости держать исходные файлы ресурса в проекте. Но лично я всегда все файлы ресурсов держу в проекте. Это, например, позволяет подхватывать изменения в файлах ресурсов сразу при компиляции без каких-либо доп. операций с дизайнером ресурсов. И в любом случае, как написано выше, после компиляции ресурсы будут "внутри" сборки. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2014, 20:02 |
|
|
start [/forum/topic.php?fid=20&msg=38610256&tid=1403052]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 385ms |
total: | 532ms |
0 / 0 |