В MRT Core есть функции времени сборки и времени выполнения. Во время сборки система создает индекс всех различных вариантов ресурсов, упакованных с помощью приложения. Этот индекс является индексом ресурсов пакета или PRI, а также включается в пакет приложения.
Необходимые компоненты
Чтобы использовать API MRT Core в пакете SDK для приложений Windows, выполните следующие действия.
Скачайте и установите последнюю версию пакета SDK для приложений Windows. Дополнительные сведения см. в статье "Начало работы с WinUI".
Дополнительные сведения о доступности MRT Core в пакете SDK для приложений Windows см . в каналах выпуска.
Файл индекса ресурсов пакета (PRI)
Каждый пакет приложения должен содержать двоичный индекс ресурсов в приложении. Этот индекс создается во время сборки и содержится в одном или нескольких файлах PRI. Каждый файл PRI содержит именованную коллекцию ресурсов, называемую картой ресурсов.
Файл PRI содержит фактические строковые ресурсы. Внедренные ресурсы двоичного и файлового пути индексируются непосредственно из файлов проекта. Пакет обычно содержит один файл PRI на язык с именем resources.pri. Файл resources.pri в корне каждого пакета автоматически загружается при создании экземпляра объекта ResourceManager .
Файлы PRI содержат только данные, поэтому они не используют формат переносимого исполняемого файла (PE). Они специально предназначены для использования только для данных.
Ескерім
Для приложений .NET в пакете SDK для приложений Windows версии 0.8 и более поздних версиях свойство файла действия сборки для файлов ресурсов в Visual Studio устанавливается автоматически, что снижает потребность в настройке проекта вручную. Версия 1.0 появилась проблема 1674. Это исправлено в версии 1.1 (из стабильного канала), но для исправления требуется пакет SDK для .NET 6.0.300 или более поздней версии. Если вы используете более раннюю версию пакета SDK для .NET, продолжайте использовать обходное решение в заметках о выпуске 1.0.
Доступ к ресурсам приложения с помощью MRT Core
MRT Core предоставляет несколько различных способов доступа к ресурсам приложения.
Самый простой способ доступа к ресурсам приложения программным способом — использовать класс ResourceLoader . ResourceLoader предоставляет базовый доступ к строковым ресурсам из набора файлов ресурсов, ссылочных библиотек или других пакетов.
Расширенные функциональные возможности с помощью ResourceManager
Класс ResourceManager предоставляет дополнительные сведения о ресурсах, таких как перечисление и проверка. Это выходит за рамки того, что предоставляет класс ResourceLoader .
Объект ResourceCandidate представляет одно конкретное значение ресурса и его квалификаторы, такие как строка Hello World для английского языка или "logo.scale-100.jpg" в качестве квалифицированного ресурса изображения, относящегося к разрешению scale-100.
Ресурсы, доступные приложению, хранятся в иерархических коллекциях, к которым можно получить доступ с помощью объекта ResourceMap . Класс ResourceManager предоставляет доступ к различным экземплярам ResourceMap верхнего уровня, используемым приложением, которые соответствуют различным пакетам для приложения. Значение ResourceManager.MainResourceMap соответствует карте ресурсов для текущего пакета приложения и исключает все пакеты платформы, на которые ссылается ссылка. Каждое resourceMap называется именем пакета, указанным в манифесте пакета. В объекте ResourceMap находятся поддерев (см. раздел ResourceMap.GetSubtree). Поддерев обычно соответствует файлам ресурсов, содержащим ресурс.
ResourceManager не только поддерживает доступ к строковым ресурсам приложения, но и поддерживает возможность перечисления и проверки различных файловых ресурсов. Чтобы избежать конфликтов между файлами и другими ресурсами, исходящими из файла, индексированные пути к файлам находятся в зарезервированном поддереве ResourceMap "Файлы". Например, файл \Images\logo.png соответствует имени ресурса Files/images/logo.png.
Определение выбора ресурсов с помощью ResourceContext
Кандидаты ресурсов выбираются на основе определенного ресурсаContext, который является коллекцией значений квалификатора ресурсов (язык, масштаб, контрастность и т. д.). Контекст по умолчанию использует текущую конфигурацию приложения для каждого значения квалификатора, если не переопределено. Например, такие ресурсы, как изображения, могут быть квалифицированы для масштабирования, которые различаются от одного монитора к другому и, следовательно, от одного представления приложения к другому. По этой причине каждое представление приложения имеет отдельный контекст по умолчанию. Каждый раз, когда вы извлекаете кандидата ресурсов, необходимо передать экземпляр ResourceContext , чтобы получить наиболее подходящее значение для данного представления.
Пример
Пример, демонстрирующий использование API MRT Core, см. в примере MRT Core.
Бұл мазмұнның көзін GitHub сайтында табуға болады. Онда сонымен бірге мәселелер мен өзгертулерді енгізу сұрауларын жасауға және қарап шығуға болады. Қосымша ақпарат алу үшін қатысушы нұсқаулығын қараңыз.
Windows developer кері байланысы
Windows developer — бастапқы коды ашық жоба. Пікір қалдыру үшін сілтемені таңдаңыз:
Узнайте, как использовать статические и динамические общие ресурсы для создания пользовательского интерфейса многоплатформенного пользовательского интерфейса приложений .NET (MAUI). А также о том, как стили могут сделать пользовательский интерфейс более согласованным и доступным.
Описывает использование расширенных функций активации с API жизненного цикла приложений в распакованных приложениях (пакет SDK для приложений Windows).