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

53

Ресурсы сборки в приложении 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 не требуется (за исключением фактической компиляции приложения).

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

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

Чтобы просмотреть встроенные ресурсы в скомпилированной сборке, можно воспользоваться дизассемблером. К сожалению, .NET-средство ildasm такую функциональность не поддерживает. Тем не менее, по адресу http://www.red-gate.com/products/reflector доступна для загрузки бесплатная и гораздо более элегантная утилита под названием .NET Reflector, которая позволяет исследовать ресурсы.

Пройди тесты
Лучший чат для C# программистов