Especificar los recursos predeterminados que la aplicación usa

Si la aplicación no tiene recursos que coincidan con la configuración concreta de un dispositivo de cliente, se usan los recursos predeterminados de la aplicación. En este tema se explica cómo especificar cuáles son esos recursos predeterminados.

Cuando un cliente instala la aplicación desde Microsoft Store, la configuración del dispositivo del cliente coincide con los recursos disponibles de la aplicación. Esta coincidencia se realiza para que solo se deban descargar e instalar los recursos adecuados para ese usuario. Por ejemplo, se usan las cadenas e imágenes más adecuadas para las preferencias de idioma del usuario y la resolución del dispositivo y la configuración de PPP. Por ejemplo, 200 es el valor predeterminado de scale, pero puede invalidar ese valor predeterminado si lo desea.

Incluso para los recursos que no entran en sus propios paquetes de recursos (como imágenes adaptadas para la configuración de contraste alto), puede especificar qué recursos predeterminados debe usar la aplicación en tiempo de ejecución si no se puede encontrar un recurso que coincida con la configuración del usuario. Por ejemplo, standard es el valor predeterminado de contrast, pero puede invalidar ese valor predeterminado si lo desea.

Estos valores predeterminados se especifican en forma de valores de calificador de recursos predeterminados. Para obtener una explicación de qué calificadores de recursos son, su uso y propósito, consulte Personalización de los recursos para lenguaje, escala, contraste alto y otros calificadores.

Puede configurar cuáles son estos valores predeterminados de una de estas dos maneras. Puede agregar un archivo de configuración al proyecto o editar el archivo de proyecto directamente. Use cualquiera de estas opciones con las que se sienta más cómodo o con la que mejor funcione con el sistema de compilación.

Opción 1. Usar priconfig.default.xml para especificar valores de calificador predeterminados

  1. En Visual Studio, agregue un nuevo elemento al proyecto. Elija Archivo XML y asigne al archivo priconfig.default.xmlel nombre .

  2. En Explorador de soluciones, seleccione priconfig.default.xml y compruebe el ventana Propiedades. La acción de compilación del archivo debe establecerse en Ninguno y copiar en El directorio de salida debe establecerse en No copiar.

  3. Reemplace el contenido del archivo por este 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>
    

    Nota El valor LANGUAGE-TAG(S) debe sincronizarse con el idioma predeterminado de la aplicación. Si es una sola etiqueta de idioma BCP-47, el idioma predeterminado de la aplicación debe ser la misma etiqueta. Si es una lista separada por comas de etiquetas de idioma, el idioma predeterminado de la aplicación debe ser la primera etiqueta de la lista. El idioma predeterminado de la aplicación se establece en el campo Idioma predeterminado de la pestaña Aplicación del archivo de origen del manifiesto del paquete de la aplicación (Package.appxmanifest).

  4. Cada <qualifier> elemento indica a Visual Studio qué valor usar como valor predeterminado para cada nombre de calificador. Con el contenido del archivo que tiene hasta ahora, no ha cambiado realmente el comportamiento de Visual Studio. En otras palabras, Visual Studio ya se comportó como si este archivo estuviera presente con este contenido, ya que estos son los valores predeterminados predeterminados. Por lo tanto, para invalidar un valor predeterminado con su propio valor predeterminado, tendrá que cambiar un valor en el archivo. Este es un ejemplo de cómo podría ser el archivo si edita los tres primeros valores.

    <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. Guarde y cierre el archivo y recompile el proyecto.

Para confirmar que los valores predeterminados invalidados se tienen en cuenta, busque el archivo <ProjectFolder>\obj\<ReleaseConfiguration folder>\priconfig.xml y confirme que su contenido coincide con las invalidaciones. Si lo hacen, ha configurado correctamente los valores de calificador de los recursos que usará la aplicación de forma predeterminada. Si no se encuentra una coincidencia para la configuración del usuario, los recursos se usarán cuyos nombres de carpeta o archivo contienen los valores predeterminados de qualifer que ha establecido aquí.

¿Cómo funciona?

En segundo plano, Visual Studio inicia una herramienta denominada MakePri.exe para generar un archivo conocido como índice de recursos de paquete (PRI), que describe todos los recursos de la aplicación, incluidos los que indican cuáles son los recursos predeterminados. Para obtener más información sobre esta herramienta, consulte Compilar recursos manualmente con MakePri.exe. Visual Studio pasa un archivo de configuración a MakePri.exe. El contenido del priconfig.default.xml archivo se usa como elemento <default> de ese archivo de configuración, que es la parte que especifica el conjunto de valores calificadores que se consideran predeterminados. Por lo tanto, agregar y editar priconfig.default.xml influye en última instancia en el contenido del archivo de índice de recursos del paquete que Visual Studio genera para la aplicación e incluye en su paquete de aplicación.

Nota Cada vez que cambies el valor del elemento, debes sincronizar ese cambio con el <qualifier name="Language" ... /> idioma predeterminado de la aplicación. Esto es para que los recursos de idioma indexados en el archivo PRI de la aplicación coincidan con el idioma predeterminado del manifiesto de la aplicación. El valor del <qualifier name="Language" ... /> elemento invalida el valor del manifiesto con respecto al contenido de <ProjectFolder>\obj\<ReleaseConfiguration folder>\priconfig.xml, pero ese archivo y el manifiesto de la aplicación deben coincidir.

Usar un nombre de archivo diferente al de priconfig.default.xml

Si asigna un nombre al archivo priconfig.default.xml, Visual Studio lo reconocerá y lo usará automáticamente. Si le asigna un nombre diferente, deberá informar a Visual Studio. En el archivo del proyecto, entre las etiquetas de apertura y cierre del primer <PropertyGroup> elemento, agregue este XML.

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

Reemplace FILE-PATH-AND-NAME por la ruta de acceso a y el nombre del archivo.

Opción 2. Usar el archivo de proyecto para especificar valores de calificador predeterminados

Esta es una alternativa a la opción 1. Una vez que comprenda cómo funciona la opción 1, puede elegir la opción 2 en su lugar, si se adapta mejor al flujo de trabajo de desarrollo o compilación.

En el archivo del proyecto, entre las etiquetas de apertura y cierre del primer <PropertyGroup> elemento, agregue este XML.

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

Este es un ejemplo de cómo podría cuidar de que haya editado los tres primeros valores.

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

Guarde y cierre y recompile el proyecto.

Nota Cada vez que cambies el Language= valor, debes sincronizar ese cambio con el idioma predeterminado de la aplicación en el diseñador de manifiestos (abriendo Package.appxmanifest).