В чем разница между ресурсом и встроенным ресурсом в приложении 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

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

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

user2064543
источник