В чем разница между ресурсом и встроенным ресурсом в приложении C #?


89

Когда я должен использовать тот или иной?

Я бы хотел, чтобы все файлы, которые я использую в своем приложении (изображения, звук, XML-файл и т. Д.), Находились внутри файла .exe, чтобы я не развертывал с кучей папок и файлов.

Спасибо за информацию.

Ответы:


82

Действия сборки «Ресурс» и «Контент» предназначены для доступа к ресурсам WPF с помощью Uris. Однако «Встроенный ресурс» предназначен для предшествующих технологий. Однако оба варианта включают ресурс в сборку, но параметр «Ресурс» будет использоваться для WPF.

MSDN предоставляет здесь полное объяснение .


Ты прав! Я установил для всех изображений в моем проекте WPF значение «Ресурс» и перестроил исходный код. Теперь, когда я перехожу в папку Debug, я нигде не могу найти файлы, они должны быть частью .exe, именно так, как я хочу. Не могу вас отблагодарить! :)
Серхио Тапиа

1
Ссылка MSDN не работает. Дополнительные объяснения здесь были бы очень хороши.
Майкл Харрис

7

Ресурс WPF (действие сборки = Resource ) использует встроенные ресурсы, поддерживаемые базовой платформой .NET, но добавляет поддержку доступа к встроенному ресурсу через URI пакета . Из MSDN :

Файлы ресурсов WPF - это не то же самое, что встроенный или связанный тип ресурсов, которые можно настроить с помощью базовой поддержки .NET Framework для ресурсов сборки. Хотя файлы ресурсов WPF используют поддержку встроенных ресурсов ядра .NET Framework, возможность доступа к файлам ресурсов WPF с помощью URI пакетов проще, чем использование пространств имен.


2

Как сообщает MSDN,

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

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


4
Это не отвечает на вопрос: в чем разница между встроенным ресурсом и ресурсом? Вы отвечаете только на адреса Embedded Resources.
Grokys

3
В тексте вопроса написано: «Когда использовать то или иное?»; Думаю, я ответил на это. Вопросов действительно два.
kiamlaluno

1

Спасибо за все отчеты, которые помогли мне более точно определить, в чем проблема: для меня это были изображения, используемые в качестве значка проекта на панели задач, которые были созданы как ресурсы и должны были быть построены как контент. Все остальные изображения можно без проблем создавать как ресурсы.

Надеюсь, это поможет в будущем.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.