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


Указание ресурсов по умолчанию, которые используются в приложении

Если у приложения нет ресурсов, которые соответствуют определенным параметрам устройства клиента, используются ресурсы приложения по умолчанию. В этом разделе описывается, как указать эти ресурсы.

Когда клиент устанавливает приложение из Microsoft Store, параметры на устройстве клиента сопоставляются с доступными ресурсами приложения. Это сопоставление выполняется таким образом, чтобы для этого пользователя нужно скачать и установить только соответствующие ресурсы. Например, используются наиболее подходящие строки и изображения для языковых настроек пользователя, а также параметры разрешения и DPI устройства. Например, 200 это значение по умолчанию, но вы можете переопределить это значение scaleпо умолчанию, если вы хотите.

Даже для ресурсов, которые не попадают в собственные пакеты ресурсов (например, изображения, адаптированные для параметров высокой контрастности), можно указать, какие ресурсы по умолчанию приложение должно использовать во время выполнения, если ресурс, соответствующий параметрам пользователя, не найден. Например, standard это значение по умолчанию, но вы можете переопределить это значение contrastпо умолчанию, если вы хотите.

Эти значения по умолчанию указываются в виде значений квалификатора ресурсов по умолчанию. Описание того, какие квалификаторы ресурсов являются, их использование и назначение, см. в статье "Настройка ресурсов для языка, масштабирования, высокой контрастности и других квалификаторов".

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

Вариант 1. Использование priconfig.default.xml для указания значений квалификатора по умолчанию

  1. В Visual Studio добавьте новый элемент в проект. Выберите XML-файл и назовите файл priconfig.default.xml.

  2. В Обозреватель решений выберите priconfig.default.xml и проверьте окно свойств. Действие сборки файла должно иметь значение None, а для копирования в выходной каталог должно быть задано значение "Не копировать".

  3. Замените содержимое файла этим XML-кодом.

    <default>
       <qualifier name="Language" value="LANGUAGE-TAG(S)" />
       <qualifier name="Contrast" value="standard" />
       <qualifier name="Scale" value="200" />
       <qualifier name="HomeRegion" value="001" />
       <qualifier name="TargetSize" value="256" />
       <qualifier name="LayoutDirection" value="LTR" />
       <qualifier name="DXFeatureLevel" value="DX9" />
       <qualifier name="Configuration" value="" />
       <qualifier name="AlternateForm" value="" />
    </default>
    

    Обратите внимание , что значение LANGUAGE-TAG(S) должно быть синхронизировано с языком вашего приложения по умолчанию. Если это один тег языка BCP-47, язык вашего приложения по умолчанию должен быть тем же тегом. Если это разделенный запятыми список тегов языка, язык по умолчанию приложения должен быть первым тегом в списке. Язык по умолчанию приложения установлен на вкладке "Приложение" на вкладке "Приложение" в исходном файле манифеста пакета приложения (Package.appxmanifest).

  4. Каждый <qualifier> элемент сообщает Visual Studio, какое значение следует использовать в качестве значения по умолчанию для каждого имени квалификатора. С содержимым файла, который вы уже сделали, вы на самом деле не изменили поведение Visual Studio. Другими словами, Visual Studio уже действовала так, как если бы этот файл присутствовал с этим содержимым, так как это значения по умолчанию. Таким образом, чтобы переопределить значение по умолчанию с собственным значением по умолчанию, необходимо изменить значение в файле. Ниже приведен пример того, как файл может выглядеть, если вы отредактировали первые три значения.

    <default>
       <qualifier name="Language" value="de-DE" />
       <qualifier name="Contrast" value="black" />
       <qualifier name="Scale" value="400" />
       <qualifier name="HomeRegion" value="001" />
       <qualifier name="TargetSize" value="256" />
       <qualifier name="LayoutDirection" value="LTR" />
       <qualifier name="DXFeatureLevel" value="DX9" />
       <qualifier name="Configuration" value="" />
       <qualifier name="AlternateForm" value="" />
    </default>
    
  5. Сохраните и закройте файл и перестроите проект.

Чтобы убедиться, что ваши переопределенные значения по умолчанию учитываются, найдите файл <ProjectFolder>\obj\<ReleaseConfiguration folder>\priconfig.xml и убедитесь, что его содержимое соответствует переопределениям. Если они выполняются, вы успешно настроили значения квалификатора ресурсов, которые приложение будет использовать по умолчанию. Если совпадение с параметрами пользователя не найдено, ресурсы будут использоваться, имена папок или файлов которых содержат значения квалифюров по умолчанию, заданные здесь.

Как это работает?

За кулисами Visual Studio запускает инструмент с именем MakePri.exe для создания файла, известного как индекс ресурсов пакета (PRI), который описывает все ресурсы вашего приложения, включая указание того, какие ресурсы по умолчанию являются ресурсами по умолчанию. Дополнительные сведения об этом средстве см. в разделе "Компиляция ресурсов" вручную с помощью MakePri.exe. Visual Studio передает файл MakePri.exeконфигурации в . Содержимое priconfig.default.xml файла используется в качестве <default> элемента этого файла конфигурации, который является частью, указывающей набор значений квалификатора, которые считаются по умолчанию. Поэтому добавление и редактирование priconfig.default.xml в конечном счете влияет на содержимое файла индекса ресурсов пакета, который Visual Studio создает для приложения и включает в свой пакет приложения.

Обратите внимание , что при изменении значения <qualifier name="Language" ... /> элемента необходимо синхронизировать это изменение с языком по умолчанию приложения. Это так, чтобы языковые ресурсы, индексированные в файле PRI приложения, соответствовали языку манифеста вашего приложения по умолчанию. Значение в <qualifier name="Language" ... /> элементе переопределяет значение в манифесте относительно содержимого <ProjectFolder>\obj\<ReleaseConfiguration folder>\priconfig.xmlфайла, но этот файл и манифест приложения должны совпадать.

Использование другого имени файла, отличного от имени priconfig.default.xml

Если вы назовете файл priconfig.default.xml, Visual Studio распознает его и будет автоматически использовать его. Если вы присвойте ему другое имя, вам потребуется сообщить Visual Studio. В файле проекта между открывающим и закрывающим тегами первого <PropertyGroup> элемента добавьте этот XML-файл.

<AppxPriConfigXmlDefaultSnippetPath>FILE-PATH-AND-NAME</AppxPriConfigXmlDefaultSnippetPath>

Замените FILE-PATH-AND-NAME путь к файлу и его имя.

Вариант 2. Использование файла проекта для указания значений квалификатора по умолчанию

Это альтернатива варианту 1. После того как вы узнаете, как работает вариант 1, можно выбрать вариант 2 вместо этого, если это подходит для разработки и (или) рабочего процесса сборки.

В файле проекта между открывающим и закрывающим тегами первого <PropertyGroup> элемента добавьте этот XML-файл.

<AppxDefaultResourceQualifiers>Language=LANGUAGE-TAG(S)|Contrast=standard|Scale=200|HomeRegion=001|TargetSize=256|LayoutDirection=LTR|DXFeatureLevel=DX9|Configuration=|AlternateForm=</AppxDefaultResourceQualifiers>

Ниже приведен пример того, как это может выглядеть после изменения первых трех значений.

<AppxDefaultResourceQualifiers>Language=de-DE|Contrast=black|Scale=400|HomeRegion=001|TargetSize=256|LayoutDirection=LTR|DXFeatureLevel=DX9|Configuration=|AlternateForm=</AppxDefaultResourceQualifiers>

Сохраните и закройте и перестроите проект.

Обратите внимание , что при изменении Language= значения необходимо синхронизировать это изменение с языком по умолчанию приложения в конструкторе манифестов (открывая Package.appxmanifest).