Перейти к содержимому

Как добавить ресурс в visual studio

  • автор:

Как внедрить файлы в ресурсы программы

введите сюда описание изображения

Внедрил три текстовых файла в проект. Думал они все время будут в проекте, однако они ссылаются на файлы в папке debug, что не есть хорошо, так как если этих файлов нет на диске — то и при компиляции возникают ошибки.

Отслеживать
14k 13 13 золотых знаков 38 38 серебряных знаков 63 63 бронзовых знака
задан 15 сен 2016 в 17:45
155 2 2 золотых знака 2 2 серебряных знака 7 7 бронзовых знаков
«Они ссылаются на файлы в папке debug» — непонятно. Кто на кого ссылается?
15 сен 2016 в 17:52

они ссылаются на файлы которые есть физически на компьютере. А мне нужно чтобы они были внедрены в сам проект.\

15 сен 2016 в 17:53
Кто такие «они»?
15 сен 2016 в 17:55
что показано на скриншоте и как это относится к вопросу?
15 сен 2016 в 18:17

Как я понял, он хочет, что бы файлы были вшиты в программу и на стороне клиента не было в них нужны. @Grundy, а как ты ссылаешь на файле в коде? Мне казалось, что VS по умолчанию их в код зашивает.

15 сен 2016 в 18:53

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Для добавления ресурсов в проект необходимо щелкнуть правой кнопкой мыши узел Свойства в проекте в Обозревателе решений, щелкнуть Открыть, а затем на странице Ресурсы в Конструкторе проектов нажать кнопку Добавить ресурс. Ресурсы можно добавить в проект в качестве связанных ресурсов (внешние файлы) или как внедренные ресурсы (внедренные непосредственно в файл RESX).

  • При добавлении связанного ресурса в файле RESX со сведениями о ресурсах проекта будет указан только относительный путь на файл ресурса на диске. Если в качестве связанных ресурсов добавить изображения, видео или другие сложные файлы, их можно будет изменять в редакторе по умолчанию, сопоставленном с соответствующим типом файла в конструкторе ресурсов.
  • В случае внедренных ресурсов, данные хранятся непосредственно в файле ресурсов проекта (RESX). Строки могут храниться только как внедренные ресурсы.

После добавления файлов в ресурсы, добавленные файлы помещаются в папку Resources, находящуюся в корне проекта.

Также можно задать действие при построении:

  • None — файл не включается в выходную группу проекта и не компилируется в процессе построения. Примером такого файла является текстовый файл документации, например файл Readme.
  • Compile — файл компилируется в выходные файлы построения. Эта настройка используется для файлов кода.
  • Content — файл не компилируется, но включается в выходную группу «Содержимое». Этот вариант используется по умолчанию для файлов HTM и других веб-файлов.
  • Embedded Resource — файл внедряется в основные выходные файлы построения проекта в виде DLL или исполняемого файла. Обычно это значение используется для файлов ресурсов.

Для задания свойства Действие при построении ( Build Action ) или свойства Копировать в выходной каталог( Copy to Output Directory ) необходимо зайти в свойства у файла ресурсов и изменить необходимое свойство.

Собственно говоря, Вас интересует свойство Действие при построении ( Build Action ) — которое необходимо указать под Ваши нужды.

Полезные ссылки для изучения:

  1. Свойства файла
  2. Связанные и внедренные ресурсы
  3. Ресурсы в файле формата .Resx
  4. Ресурсы в приложениях
  5. Упаковка и развертывание ресурсов

Ресурсы сборки

Ресурсы сборки в приложении WPF работают, по сути, точно так же, как и в других приложениях .NET. Базовая концепция заключается в добавлении файла к проекту, чтобы среда Visual Studio могла встроить его в скомпилированный файл приложения EXE или DLL. Главное отличие между ресурсами сборки WPF и ресурсами в других приложениях связано с системой адресации, которая используется для ссылки на них.

Ресурсы сборки также еще называют двоичными ресурсами, потому что они встраиваются в скомпилированную сборку (EXE- или DLL-файл проекта) в виде «непрозрачного» большого двоичного объекта.

Именно с использованием двоичных ресурсов всякий раз, когда компилируется приложение, все XAML-файлы в проекте преобразуются в более удобные для синтаксического анализа BAML-файлы. Далее эти BAML-файлы вставляются в сборку в виде отдельных ресурсов. Собственные ресурсы добавляются так же легко.

Добавление ресурсов

Для создания собственных ресурсов следует добавить в проект нужный файл и установить для него свойство Build Action (Действие при построении) (в окне Properties (Свойства)) значение Resource (Ресурс). К счастью, больше ничего делать не понадобится.

Для более удобной организации можно создать в проекте подпапки (щелкнув правой кнопкой мыши в окне Solution Explorer (Проводник решений) и выбрав в контекстном меню пункт Add —> New Folder (Добавить —> Новая папка)) и применять их для упорядочивания различных типов ресурсов.

Приложение с ресурсами сборки

Ресурсы, добавляемые подобным способом, легко обновлять. Все, что для этого необходимо — заменить файл и скомпилировать приложение заново. Например, в случае создания такого проекта, как был показан на рисунке, все новые файлы можно было бы скопировать в папку Images с помощью проводника Windows. Поскольку содержимое файлов, входящих в состав проекта, заменяется, выполнять какие-то специальные действия в Visual Studio не требуется (за исключением фактической компиляции приложения).

Однако существует несколько вещей, которые не следует делать для того, чтобы использовать ресурсы сборки успешно:

  • Не следует устанавливать для свойства Build Action значение Embedded Resource (встроенный ресурс). Хотя все ресурсы сборки являются встроенными ресурсами по определению, действие Build Action приводит к размещению двоичных данных в более трудном для доступа месте. Поэтому для приложений WPF нужно всегда использовать просто значение Resource (Ресурс).
  • Не следует применять доступную в окне Project Properties (Свойства проекта) вкладку Resources (Ресурсы). WPF не поддерживает такой тип URI-идентификаторов ресурсов.

Любознательные программисты обычно желают знать, что происходит с ресурсами, которые они встраивают в свои сборки. На самом деле WPF объединяет их все в один поток (вместе с ресурсами BAML). Этот один поток ресурсов получает имя в формате ИмяСборки.g.resources.

Генерирование ресурсов в Visual Studio 2005

С файлами *.resx и *.resources можно, конечно, работать вручную в командной строке, но Visual Studio 2005 предлагает средства автоматизации создания и встраивания ресурсов в проект. Для примера создайте новое приложение Windows Forms, назвав его MyResourcesWinApp. Открыв для созданного проекта окно Solution Explorer, вы увидите, что теперь с каждой формой в вашем приложении автоматически связывается файл *.resx (рис. 20.26).

Рис. 20.26. Автоматическое генерирование файлов *.resx в Visual Studio 2005

При добавлении вами ресурсов (например, изображений в PictureBox) с помощью визуальных инструментов проектирования этот файл *.resx будет изменяться автоматически. Более того, вы не должны вручную обновлять этот файл, чтобы указать пользовательские ресурсы, поскольку Visual Studio 2005 регенерирует этот файл при каждой компиляции проекта. Чтобы гарантировать правильную структуру этого файла, лучше всего позволить среде разработки самой управлять файлом *.resx формы.

Если вы захотите предложить пользовательский набор ресурсов, не связанный непосредственно с данной формой, просто добавьте новый файл *.resx (в нашем примере это файл MyCustomResources.resx), выбрав команду Project?Add New Item из меню (рис. 20.27).

Если открыть новый файл *.resx, соответствующий редактор позволит вставить необходимые строковые данные, изображения, звуковые фрагменты и другие ресурсы. Крайнее слева раскрывающееся меню позволит выбрать вид ресурса, который вы хотите добавить. Сначала добавьте новый строковый ресурс с именем WelcomeString, чтобы с его помощью задать то сообщение, которое вы хотите видеть (рис. 20.28).

Теперь добавьте изображение happyDude.bmp, сначала выбрав Images из крайнего меню, после этого – Add Existing File (рис. 20.29), а затем – указав файл happyDude.bmp в появившемся окне загрузки файла.

Рис. 20.27. Добавление нового файла *.resx

Рис. 20.28. Добавление нового строкового ресурса с помощью редактора файлов *.resx

Рис. 20.29. Добавление нового ресурса *.bmp с помощью редактора файлов *.resx

После этого вы обнаружите, что файл *.bmp скопирован в каталог вашего приложения. Выбрав пиктограмму happyDude в редакторе *.resx и используя возможности свойства Persistеnce, можно потребовать, чтобы данное изображение было непосредственно встроено в компоновочный блок, а не задавалось ссылкой на внешний файл (рис. 20.30).

Рис. 20.30. Встраивание указанных ресурсов

Теперь окно Solution Explorer предлагает новую папку под названием Resources, которая содержит все элементы, встроенные в компоновочный блок. Легко догадаться, что при открытии ресурса Visual Studio 2005 запускает соответствующий редактор. В любом случае, если вы теперь скомпилируете свое приложение, указанные вами строка и изображение будут встроены в компоновочный блок.

Читайте также

Компоновка .NET-приложений с помощью Visual Studio 2005

Компоновка .NET-приложений с помощью Visual Studio 2005 Если вы являетесь профессиональным разработчиком программного обеспечения .NET, очень велика вероятность того, что ваш работодатель согласится купить для вас лучшую интегрированную систему разработки от Microsoft – Visual Studio 2005

Возможности Visual Studio 2005

Возможности Visual Studio 2005 Как и следует ожидать, Visual Studio 2005 содержит все необходимые средства проектирования, средства доступа к базам данных, утилиты обзора проектов и объектов, а также интегрированную систему справки. Но, в отличие от средств разработки, которые были

Пространство имен по умолчанию в Visual Studio 2005

Пространство имен по умолчанию в Visual Studio 2005 В заключение нашего обсуждения пространств имен следует отметить, что при создании нового C#-проекта в Visual Studio 2005 имя пространства имен вашего приложения по умолчанию будет совпадать с именем проекта. При вставке новых

Отладка необработанных исключений в Visual Studio 2005

Отладка необработанных исключений в Visual Studio 2005 В завершение нашего обсуждения следует заметить, что в Visual Studio 2005 предлагается целый ряд инструментов, которые помогают выполнить отладку программ с необработанными пользовательскими исключениями. Снова предположим, что

Реализация интерфейсов в Visual Studio 2005

Реализация интерфейсов в Visual Studio 2005 Программирование на основе интерфейсов – это мощная техника программирования, но процесс реализации интерфейсов может предполагать ввод программного кода вручную в очень больших объемах. Поскольку интерфейсы представляют собой

Упрощенная регистрация событий в Visual Studio 2005

Упрощенная регистрация событий в Visual Studio 2005 В Visual Studio .NET 2003 и Visual Studio 2005 предлагается помощь в процессе регистрации обработчиков событий. При вводе += в окне программного кода появляется окно IntelliSense, предлагающее назвать клавишу ‹Tab›, чтобы автоматически ввести

Файлы конфигурации и Visual Studio 2005

Файлы конфигурации и Visual Studio 2005 Вы, конечно, можете всегда создавать XML-файлы конфигурации вручную с помощью своего любимого текстового редактора, но Visual Studio 2005 позволяет создать файл конфигурации в процессе построения программы-клиента. Для примера загрузите в Visual Studio

Назначение строгого имени в Visual Studio 2005

Назначение строгого имени в Visual Studio 2005 Перед тем как установить CarLibrary.dll в структуру GAC, заметим, что Visual Studio 2005 позволяет указать место расположения файла *.snk на странице Properties (Свойства) проекта (в Visual Studio 2005 такой подход оказывается более предпочтительным, поскольку при

Файл AssemblyInfo.cs в Visual Studio 2005

Файл AssemblyInfo.cs в Visual Studio 2005 По умолчанию Visual Studio 2005 генерирует файл с именем AssemblyInfo.cs (рис. 12.9). Рис. 12.9. Файл AssemblyInfo.csЭтот файл является удобным местом для хранения атрибутов, которые должны применяться на уровне компоновочного блока. В табл. 12.4 приводится список некоторых

Создание Windows-приложений в Visual Studio 2005

Создание Windows-приложений в Visual Studio 2005 В Visual Studio 2005 предлагается специальный шаблон для создания приложений Windows Forms. Выбрав шаблон Windows Application при создании проекта, вы получите не только объект приложения с соответствующим методом Main(), но и подходящий исходный тип,

Добавление элементов управления в форму в Visual Studio 2005

Добавление элементов управления в форму в Visual Studio 2005 Теперь, когда вы понимаете суть процесса добавления элементов управления в форму, давайте посмотрим, как Visual Studio 2005 может автоматизировать этот процесс. Создайте новый проект Windows Application, выбрав дня него произвольное

Соединение с базой данных в Visual Studio 2005

Соединение с базой данных в Visual Studio 2005 Итак, база данных Cars создана, и вы можете установить соединение с этой базой данных из Visual Studio 2005. Это позволит просматривать и редактировать различные объекты базы данных в среде разработки Visual Studio 2005. Используя меню View, откройте окно

Создание Web-сервиса XML в Visual Studio 2005

Создание Web-сервиса XML в Visual Studio 2005 Создав Web-сервис XML вручную, давайте посмотрим, как это делается в Visual Studio 2005. Выбрав File?New?Web Site из меню, создайте новый C#-проект Web-сервиса XML с именем MagicEightBallWebService и сохраните этот проект на своем локальном диске (рис. 25.3).Замечание. Как и в

Генерирование программного кода агента в Visual Studio 2005

Генерирование программного кода агента в Visual Studio 2005 Утилита wsdl.exe, конечно, предлагает целый ряд аргументов командной строки, которые позволяют контролировать результат генерирования класса агента, но Visual Studio 2005 позволяет быстро сгенерировать файл агента, используя

Взаимодействие с UDDI в Visual Studio 2005

Взаимодействие с UDDI в Visual Studio 2005 Вспомните о том, что диалоговое окно Add Web Reference позволяет не только получить список всех Web-сервисов XML, размещенных на вашей локальной машине (а также по известному URL), но и предъявить запрос к UDDI-серверу. Как правило, вы имеете на выбор

Что нового в Visual Studio .NET 2005

Что нового в Visual Studio .NET 2005 Если у вас уже был опыт программирования под Visual Studio .NET 2003, то вы заметите, что на панели инструментов появились новые элементы управления. Они будут рассматриваться в главе, посвященной элементам управления. При разработке дизайна приложения

Как добавить ресурсы в сборку?

Но там так и не сказали как же мне добавить в этот создаваемый файл файл ресурсов (картинку.)
Ну и как мне указать иконку для этого билда ?

Скажу сразу , гуглил ! но видимо я не умею гуглом пользоваться

Иконка не важна а вот как добавить картинку в ресурсы очень интересно
Так как постоянно таскать её за билдом как минимум не удобно

Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

CodeDOM. Как поместить файл в ресурсы и как добавить ссылку на сборку из ресурсов?
Здравствуйте, у меня есть функция которая собирает программу из исходного кода на c# public void.

Как программно добавить картинку в ресурсы?
Добрый день. 1) Как программно, добавить картинку в ресурсы и сделать так, что если запускают.

Как добавить string в ресурсы? (консольное приложение)
Нужно чтобы вводимые во время выполнения программы данные сохранялись в программе, а не в текстовом.

Как добавить ресурсы в сборку на C++ для WinAPI?
как добавить ресурсы в сборку на c++ для winapi? Смотрю в статьях, в книжках, везде описано для.

Администратор

Эксперт .NET

16397 / 12874 / 5074
Регистрация: 17.03.2014
Сообщений: 26,192
Записей в блоге: 1

DeiTy, начни с получения текста файла ресурсов. Для этого добавь в свой проект resx файл, добавь в него все необходимые ресурсы, для не-строковых ресурсов поставь параметр «Emdedded in .resx». Таким образом в resx файле который является текстовым файлов в формате XML будет все ресурсы с их содержимым. Текст этого файла нужно добавить в ресурсы своего приложения. Назовем его например res.resources.txt.

Далее нам нужен код чтения из ресурсов. Он находится в файле Designer.cs. Возьми его его и скопируй в файл res.txt где находится остальной исходный код. Затем найди в коде место где создается ResourceManager и замени его аргумент на имя выходной сборки. После этого можно написать код в res.txt (внутри кода формы) который работает с ресурсами.

Финальный шаг — компиляция. Добавляем чтение ресурса с именем res.resources.txt и сохраняем на диск в папку для временных файлов. В экземпляре CompilerParameters заполняем свойство EmbeddedResources. После компиляции можно удалить файл их временной папки т.к. он уже не нужен.

63 / 69 / 22
Регистрация: 28.04.2015
Сообщений: 194
Записей в блоге: 1
Если я Вас правильно понял, то Вам нужно сюда

добавлять картинку к примеру, чтобы она вместе(внутри) с проектом таскалась.

Ручное добавление ресурса в файл ресурсов проекта:

Тогда кликаем дважды по Resources.resx(этот файл создается автоматически в Windows Form Приложениях и некоторых других) далее смотрим на картинку

0 — Дважды кликнув по Resources.resx( если еще не кликнули )
1 — Выбираем «Изображения»(изначально «Строки»)
2 — Выбираем в добавить ресурс «Добавить существующий файл»
3 — Появляется ресурс, который можно вызвать например так

panel1.BackgroundImage = Properties.Resources.Ресурсы; // Ресурсы - названия нашего файла

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *