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


Создание и извлечение ресурсов в приложениях для Магазина Windows

В операционной системе Windows 8 появилась новая модель ресурсов для приложений Магазин Windows, которая заменяет привычную для настольных приложений .NET Framework модель "звезда". В этом разделе обсуждается эта новая модель ресурсов и описывается порядок создания, развертывания и получения ресурсов в приложениях Магазин Windows.

Ресурсы в приложениях Магазин Windows

В настольных приложениях .NET Framework для упаковки и развертывания ресурсов используется модель "звезда". Как правило, ресурсы для нейтрального языка и региональных параметров приложения ("язык и региональные параметры", используемые при отсутствии локализованных ресурсов) встраиваются в основной исполняемый файл приложения. Локализованные ресурсы для каждого дополнительного языка и региональных параметров, встраиваются в отдельную вспомогательную сборке, которая содержит только ресурсы без исполняемого кода.

В приложениях Магазин Windows, напротив, используют единый файл ресурсов. Этот файл называется файлом индекса ресурсов пакета (PRI) и содержит ресурсы для всех языков, региональных параметров и коэффициентов масштабирования.

Важно!

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

В настольных приложения для создания ресурсов можно использовать текстовые файлы или XML-файлы (с расширением RESX). Для компиляции этих файлов в двоичные файлы ресурсов (с расширением RESOURCES служит Генератор файлов ресурсов (Resgen.exe). Чтобы встроить ресурсы нейтрального языка и региональных параметров в основную сборку приложения, воспользуйтесь компилятором, а чтобы встроить остальные локализованные ресурсы во вспомогательные сборки, воспользуйтесь компоновщиком сборок (AL.exe). После этого можно получать отдельные ресурсы с помощью класса ResourceManager или выполнять перебор ресурсов с помощью класса ResourceReader.

В приложениях Магазин Windows для создания ресурсов используются RESW-файлы. Несмотря на разницу в расширениях, формат файла RESW идентичен формату файла RESX, за тем исключением, что RESW-файлы могут содержать только строки и пути к файлам. В Visual Studio можно создавать и изменять ресурсы с помощью редакторов ресурсов. Во время компиляции все RESW-файлы приложения упаковываются в один PRI-файл программой MakePRI и включаются в пакет развертывания приложения. Во время выполнения класс Windows.ApplicationModel.Resources.ResourceLoader и типы в пространстве имен Windows.ApplicationModel.Resources.Core обеспечивают доступ к ресурсам приложения.

Важно!

Хотя Генератор файлов ресурсов (Resgen.exe) в основном используется в настольных приложениях, его также можно использовать и для декомпиляции вспомогательных сборок в RESW-файлы, которые затем будут компилироваться в PRI-файл.

Предупреждение

Хотя класс ResourceManager включен в Приложения .NET для Магазина Windows, использовать его не рекомендуется. Используйте ResourceManager только в библиотеках, которые разрабатываются в виде проектов Переносимая библиотека классов и которые предназначены для нескольких платформ.

Создание файлов ресурсов

Редакторы ресурсов Visual Studio являются наиболее простым и удобным способом создания RESW-файлов. Эти редакторы содержат пользовательский интерфейс, который скрывает исходный XML-формат RESW-файла. Использование Visual Studio для создания и редактирования файлов ресурсов имеет два основных преимущества:

  • отпадает необходимость создания файлов ресурсов вручную и контроля правильности XML-формата;

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

Чтобы создать файл ресурсов, откройте приложение Магазин Windows в обозревателе решений, затем откройте контекстное меню для имени проекта и последовательно выберите Добавить, Создать элемент и Файл ресурсов в списке элементов.

В настольных приложениях для указания нейтрального языка и региональных параметров использовался атрибут NeutralResourcesLanguageAttribute. В приложениях Магазин Windows этот атрибут не учитывается при создании PRI-файлов и при извлечении ресурсов с помощью класса Windows ResourceLoader.

В приложениях Магазин Windows имена локализованных файлов ресурсов задаются путем создания папки для хранения ресурсов и изображений определенного поддерживаемого языка и региональных параметров. Затем ресурсы можно задавать с помощью имен языков и региональных параметров (например, "ru-ru"), за которыми следует имя ресурса по умолчанию и расширение файла ресурсов (например, "ru-ru\Resources.resw").

Развертывание файлов ресурсов

В Visual Studio все параметры развертывания файлов ресурсов в приложениях обрабатываются в рамках проектов Visual Studio. Visual Studio автоматически создает файл конфигурации для всех ресурсов, которые являются частью проекта, с помощью средства MakePRI включает ресурсы в один PRI-файл и помещает PRI-файл в пакет развертывания приложения.

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

Извлечение ресурсов из файлов ресурсов

Чтобы извлечь ресурсы в приложение Магазин Windows, необходимо создать экземпляр объекта Среда выполнения Windows Windows.ApplicationModel.Resources.ResourceLoader или одного из типов в пространстве имен Windows.ApplicationModel.Resources.Core. Хотя класс .NET Framework ResourceManager поддерживается в Магазин Windows, использовать его не рекомендуется. Используйте ResourceManager только при разработке проектов Переносимая библиотека классов, предназначенных для нескольких платформ. В следующей таблице перечислены члены ResourceManager и их простые эквиваленты в классе Windows.ApplicationModel.Resources.ResourceLoader или типы в пространстве имен Windows.ApplicationModel.Resources.Core.

Член ResourceManager

Эквивалентный член ResourceLoader или другого типа Среда выполнения Windows

ResourceManager.GetString(String)

Windows.ApplicationModel.Resources.ResourceLoader.GetString(String)

ResourceManager.GetString(String, CultureInfo)

Windows.ApplicationModel.Resources.Core.ResourceMap.GetValue(String, ResourceContext)

ResourceManager.#ctor(String, Assembly)

Windows.ApplicationModel.Resources.ResourceLoader.ResourceLoader()

-или-

Windows.ApplicationModel.Resources.ResourceLoader.ResourceLoader(String)

Простой пример "Hello World"

Ниже приведен простой пример приложения Магазин Windows, в котором отображаются локализованные строки. Его нейтральный язык и региональные параметры — "Русский (Россия)", но оно также включает ресурсы для языков "Английский (США)" и "Французский (Франция)". Если запустить приложение в системе, в которой установлен текущий язык и региональные параметры "Английский (США)", то появится приветствие на английском языке; в противном случае будет показано русское приветствие по умолчанию. Наконец, независимо от текущего языка и региональных параметров, приложение использует объекты Windows.ApplicationModel.Resources.Core.ResourceContext и Windows.ApplicationModel.Resources.Core.ResourceMap для отображения приветствия на французском языке.

Для отображения текста в элементе управления TextBlock необходимо добавить в файл BlankPage.xaml следующий тег <TextBlock>:

    <Grid Background="{StaticResource PageBackgroundBrush}">
       <TextBlock x:Name="outputBlock" />
    </Grid>

Затем код приложения вызывается из конструктора класса BlankPage следующим образом:

Пример требует создания следующих ресурсов:

  • русский языковой ресурс с именем "Greeting" и значением "Привет!". Строка должна быть добавлена в файл ресурсов Resources.resw на корневом уровне проекта;

  • английский языковой ресурс с именем "Greeting" и значением "Hi there!". Для создания файла ресурсов добавьте в проект папку с именем en-US, а затем добавьте в нее файл ресурсов с именем Resources.resw;

  • французский языковой ресурс с именем "Greeting" и значением "Bonjour!". Для создания файла ресурсов добавьте в проект папку с именем fr-FR, а затем добавьте в нее файл ресурсов с именем Resources.resw.

В следующем примере показаны соответствующие локализованные строки в элементе управления TextBlock.

После компиляции и запуска приложения будет выведен текст следующего вида (для системы с языком и региональными параметрами "Английский (США)"):

The current culture is en-US.
Hi there!

Culture of Current Context: fr-FR
Bonjour!

См. также

Ссылки

Редакторы ресурсов Visual Studio

Основные понятия

Ресурсы в приложениях для настольных систем