Поделиться через


Управление ресурсами с помощью MRT Core

MRT Core — это упрощенная версия современной системы управления Windows Resource Management System которая распространяется как часть Windows App SDK.

В MRT Core есть функции времени сборки и времени выполнения. Во время сборки система создает индекс всех различных вариантов ресурсов, упакованных с помощью приложения. Этот индекс является индексом ресурсов пакета или PRI, а также включается в пакет приложения.

Предварительные условия

Чтобы использовать API-интерфейсы MRT Core в Windows App SDK, выполните следующие действия.

  1. Скачайте и установите последний выпуск Windows App SDK. Подробности смотрите в разделе Начало работы с WinUI 3.
  2. Следуйте инструкциям, чтобы Создать ваш первый проект WinUI или использовать Windows App SDK в существующем проекте.

Дополнительные сведения о доступности MRT Core в Windows App SDK см. в разделе каналы выпуска.

Файл индекса ресурсов пакета (PRI)

Каждый пакет приложения должен содержать двоичный индекс ресурсов в приложении. Этот индекс создается во время сборки и содержится в одном или нескольких файлах PRI. Каждый файл PRI содержит именованную коллекцию ресурсов, называемую картой ресурсов.

Файл PRI содержит фактические строковые ресурсы. Внедренные двоичные ресурсы и ресурсы пути к файлам индексируются непосредственно из файлов проекта. Пакет обычно содержит один файл PRI на язык с именем resources.pri. Файл resources.pri в корне каждого пакета автоматически загружается при создании экземпляра объекта ResourceManager .

Файлы PRI содержат только данные, поэтому они не используют формат переносимого исполняемого файла (PE). Они специально разработаны только для данных.

Примечание.

Для приложений .NET в Windows App SDK версии 0.8 и более поздних версиях Build Action для файлов ресурсов в Visual Studio устанавливается автоматически, что снижает потребность в ручной настройке проекта. Версия 1.0 представила issue 1674. Это исправлено в версии 1.1 (из стабильного канала), но для исправления требуется .NET пакет SDK 6.0.300 или более поздней версии. Если вы используете более раннюю версию пакета SDK для .NET, пожалуйста, продолжайте использовать обходное решение, описанное в примечаниях к выпуску 1.0.

Получите доступ к ресурсам приложений с помощью MRT Core

MRT Core предоставляет несколько способов доступа к ресурсам вашего приложения.

Примечание.

В Windows App SDK версии 1.0 (предварительная версия 1) и более поздних версий API MRT Core находятся в пространстве имен Microsoft.Windows.ApplicationModel.Resources. В предыдущих выпусках они находятся в пространстве имен Microsoft.ApplicationModel.Resources .

Основные функции с помощью ResourceLoader

Самый простой способ программного доступа к ресурсам приложения — использовать класс ResourceLoader. ResourceLoader предоставляет базовый доступ к строковым ресурсам из набора файлов ресурсов, ссылочных библиотек или других пакетов.

Расширенные функциональные возможности с помощью ResourceManager

Класс ResourceManager предоставляет дополнительные сведения о ресурсах, таких как перечисление и проверка. Это выходит за рамки того, что предоставляет класс ResourceLoader .

Объект ResourceCandidate представляет одно конкретное значение ресурса и его квалификаторы, такие как строка "Hello World" для английского языка или "logo.scale-100.jpg" в качестве квалифицированного ресурса изображения, относящегося к разрешению scale-100.

Ресурсы, доступные приложению, хранятся в иерархических коллекциях, которые можно access с помощью объекта ResourceMap. Класс ResourceManager предоставляет доступ к различным экземплярам ResourceMap, используемым приложением и соотносящимся с различными пакетами приложения. Значение ResourceManager.MainResourceMap соответствует карте ресурсов для текущего пакета приложения и исключает все пакеты платформы, на которые ссылается ссылка. Каждое resourceMap называется именем пакета, указанным в манифесте пакета. В объекте ResourceMap находятся поддерев (см. раздел ResourceMap.GetSubtree). Поддеревья обычно соответствуют файлам ресурсов, содержащим этот ресурс.

ResourceManager не только обеспечивает доступ к строковым ресурсам приложения, но и позволяет перечислять и проверять различные файловые ресурсы. Чтобы избежать конфликтов между файлами и другими ресурсами, исходящими из файла, индексированные пути к файлам находятся в зарезервированном поддереве ResourceMap "Файлы". Например, файл \Images\logo.png соответствует имени ресурса Files/images/logo.png.

Уточнение выбора ресурсов с использованием ResourceContext

Кандидаты ресурсов выбираются на основе определенного ResourceContext, который представляет собой набор значений квалификаторов ресурсов (языка, масштабирования, контрастности и т. д.). Контекст по умолчанию использует текущую конфигурацию приложения для каждого значения квалификатора, если она не была изменена. Например, такие ресурсы, как изображения, могут быть адаптированы для масштабирования, которое варьируется от одного монитора к другому и, следовательно, от одного интерфейса приложения к другому. По этой причине каждое представление приложения имеет отдельный контекст по умолчанию. Каждый раз, когда вы извлекаете ресурсного кандидата, необходимо передать экземпляр ResourceContext для получения наиболее подходящего значения для данного представления.

Пример

Пример использования API MRT Core см. в примере MRT Core.

См. также