Especificar os recursos padrão usados pelo aplicativoSpecify the default resources that your app uses

Se o aplicativo não tiver recursos que correspondam às configurações específicas de um dispositivo de cliente, os recursos padrão do aplicativo serão usados.If your app doesn't have resources that match the particular settings of a customer device, then the app's default resources are used. Este tópico explica como especificar quais são esses recursos padrão.This topic explains how to specify what those default resources are.

Quando um usuário instala o app da Microsoft Store, as configurações no dispositivo do cliente são comparadas com os recursos disponíveis do app.When a customer installs your app from the Microsoft Store, settings on the customer's device are matched against the app's available resources. Essa comparação é feita para que somente os recursos apropriados precisem ser baixados e instalados para esse usuário.This matching is done so that only the appropriate resources need to be downloaded and installed for that user. Por exemplo, as cadeias de caracteres e imagens mais apropriadas para as preferências de idioma do usuário e a resolução e as configurações de DPI do dispositivo são usadas.For example, the most appropriate strings and images for the user's language preferences, and the device's resolution and DPI settings, are used. Por exemplo, 200 é o valor padrão para scale, mas você pode substituir esse padrão se desejar.For example, 200 is the default value for scale, but you can override that default if you wish.

Até mesmo para recursos que não tenham seus próprios pacotes de recursos (como imagens personalizadas para configurações de alto contraste), você poderá especificar quais recursos padrão o app deve usar em tempo de execução se um recurso correspondente às configurações do usuário não puder ser encontrado.Even for resources that don't go into their own resource packs (such as images tailored for high contrast settings), you can specify what default resources the app should use at run time if a resource that matches the user's settings can't be found. Por exemplo, standard é o valor padrão para contrast, mas você pode substituir esse padrão se desejar.For example, standard is the default value for contrast, but you can override that default if you wish.

Esses padrões são especificados sob a forma de valores de qualificador de recurso padrão.These defaults are specified in the form of default resource qualifier values. Para obter uma explicação do que são os qualificadores de recurso, seu uso e sua finalidade, consulte Personalizar os recursos de idioma, escala, alto contraste e outros qualificadores.For an explanation of what resource qualifiers are, their use, and purpose, see Tailor your resources for language, scale, high contrast, and other qualifiers.

Você pode configurar o que são esses padrões de duas maneiras.You can configure what these defaults are in one of two ways. Você pode adicionar um arquivo de configuração ao projeto ou editar o arquivo de projeto diretamente.You can either add a configuration file to your project, or you can edit your project file directly. Use a alternativa com a qual se sentir mais confortável ou a que funcionar melhor no seu sistema de compilação.Use whichever of these options you're most comfortable with, or whichever works best with your build system.

Opção 1.Option 1. Use priconfig.default.xml para especificar valores de qualificador padrãoUse priconfig.default.xml to specify default qualifier values

  1. No Visual Studio, adicione um novo item ao projeto.In Visual Studio, add a new item to your project. Escolha Arquivo XML e nomeie o arquivo como priconfig.default.xml.Choose XML File, and name the file priconfig.default.xml.

  2. No Gerenciador de Soluções, selecione priconfig.default.xml e verifique a janela Propriedades.In Solution Explorer, select priconfig.default.xml and check the Properties window. A Ação de Build do arquivo deve ser definida como Nenhuma, enquanto Copy to Output Directory definida como Do not copy.The file's Build Action should be set to None, and Copy to Output Directory should be set to Do not copy.

  3. Substitua o conteúdo do arquivo por este XML.Replace the contents of the file with this 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>
    

    Observação O valor LANGUAGE-TAG(S) precisa ser sincronizado com o idioma padrão do app.Note The value LANGUAGE-TAG(S) needs to be synchronized with your app's default language. Se essa for uma única marca de idioma BCP-47, o idioma padrão do app precisará ter a mesma marca.If that's a single BCP-47 language tag, then your app's default language needs to be the same tag. Se for uma lista separada por vírgulas de marcas de idioma, o idioma do padrão do app precisará ser a primeira marca na lista.If it's a comma-separated list of language tags, then your app's default language needs to be the first tag in the list. Defina o idioma padrão do app no campo Idioma Padrão da guia Aplicativo no arquivo de origem do manifesto do pacote de aplicativos (Package.appxmanifest).You set your app's default language in the Default language field on the Application tab in your app package manifest source file (Package.appxmanifest).

  4. Cada elemento <qualifier> informa ao Visual Studio qual valor será usado como padrão para cada nome de qualificador.Each <qualifier> element tells Visual Studio what value to use as the default for each qualifier name. Com o conteúdo de arquivo que você tem até agora, o comportamento do Visual Studio não foi alterado.With the file contents you have so far, you haven't actually changed Visual Studio's behavior. Em outras palavras, o Visual Studio já estava se comportando como se esse arquivo estivesse presente com esse conteúdo, pois isso é o padrão.In other words, Visual Studio already behaved as if this file were present with these contents, because these are the default defaults. Portanto, para substituir um padrão pelo seu próprio valor padrão, você precisará alterar um valor no arquivo.So to override a default with your own default value, you'll have to change a value in the file. Este é um exemplo da aparência do arquivo se você tiver editado os primeiros três valores.Here's an example of how the file might look if you'd edited the first three values.

    <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. Salve e feche o arquivo, e recompile o projeto.Save and close the file and rebuild your project.

Para confirmar que os padrões substituídos estão sendo levados em consideração, procure o arquivo <ProjectFolder>\obj\<ReleaseConfiguration folder>\priconfig.xml e confirme se seu conteúdo corresponde às suas substituições.To confirm that your overridden defaults are being taken into account, look for the file <ProjectFolder>\obj\<ReleaseConfiguration folder>\priconfig.xml and confirm that its contents match your overrides. Em caso afirmativo, você configurou com êxito os valores de qualificador dos recursos que o app usará por padrão.If they do, then you have successfully configured the qualifier values of the resources that your app will use by default. Se não for encontrada uma correspondência para as configurações do usuário, os recursos usados serão aqueles cujos nomes de arquivo ou pasta contenham os valores de qualifer padrão que você definiu aqui.If a match for the user's settings is not found, then resources will be used whose folder or file names contain the default qualifer values that you've set here.

Como isso funciona?How does this work?

Em segundo plano, o Visual Studio inicia uma ferramenta chamada MakePri.exe para gerar um arquivo conhecido como índice de recurso do pacote (PRI), que descreve todos os recursos do app, incluindo a indicação de quais são os recursos padrão.Behind the scenes, Visual Studio launches a tool named MakePri.exe to generate a file known as a Package Resource Index (PRI), which describes all of your app's resources, including indicating which are the default resources. Para obter detalhes sobre essa ferramenta, consulte Compilar recursos manualmente com o MakePri.exe.For details about this tool, see Compile resources manually with MakePri.exe. O Visual Studio passa um arquivo de configuração para o MakePri.exe.Visual Studio passes a configuration file to MakePri.exe. O conteúdo do arquivo priconfig.default.xml é usado como elemento <default> desse arquivo de configuração, que é a parte que especifica o conjunto de valores de qualificador considerados como padrão.The contents of your priconfig.default.xml file are used as the <default> element of that configuration file, which is the part that specifies the set of qualifier values that are considered to be default. Assim, a adição e a edição de priconfig.default.xml acaba influenciando o conteúdo do arquivo de índice de recurso do pacote que o Visual Studio gera para o app e inclui no pacote de aplicativos.So, adding and editing priconfig.default.xml ultimately influences the contents of the Package Resource Index file that Visual Studio generates for your app and includes in its app package.

Observação Sempre que você alterar o valor do elemento <qualifier name="Language" ... />, precisará sincronizar essa alteração com o idioma padrão do app.Note Any time you change the value of the <qualifier name="Language" ... /> element, you need to synchronize that change with your app's default language. Isso acontece para que os recursos de idioma indexados no arquivo PRI do app correspondam ao idioma do padrão do manifesto do app.This is so that the language resources indexed in your app's PRI file match your app's manifest default language. O valor no elemento <qualifier name="Language" ... /> substitui o valor no manifesto em relação ao conteúdo do <ProjectFolder>\obj\<ReleaseConfiguration folder>\priconfig.xml, mas esse arquivo e o manifesto do app devem ser correspondentes.The value in the <qualifier name="Language" ... /> element overrides the value in the manifest with respect to the contents of <ProjectFolder>\obj\<ReleaseConfiguration folder>\priconfig.xml, but that file and your app's manifest should match.

Usando um nome de arquivo diferente de priconfig.default.xmlUsing a different file name than priconfig.default.xml

Se você nomear o arquivo priconfig.default.xml, o Visual Studio o reconhecerá e o usará automaticamente.If you name your file priconfig.default.xml, then Visual Studio will recognize it and use it automatically. Se você atribuir outro nome a ele, será necessário informar o Visual Studio.If you give it a different name, then you'll need to let Visual Studio know. No arquivo de projeto, entre as marcas de abertura e fechamento do primeiro elemento <PropertyGroup>, adicione esse XML.In your project file, between the opening and closing tags of the first <PropertyGroup> element, add this XML.

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

Substitua FILE-PATH-AND-NAME pelo caminho e nome do arquivo.Replace FILE-PATH-AND-NAME with the path to, and name of, your file.

Opção 2.Option 2. Usar o arquivo de projeto para especificar valores de qualificador padrãoUse your project file to specify default qualifier values

Esta é uma alternativa para a Opção 1.This is an alternative to Option 1. Depois que você entender como funciona a Opção 1, poderá optar pela Opção 2, se ela for mais adequada ao seu fluxo de trabalho de desenvolvimento e/ou compilação.Once you understand how Option 1 works, you can choose to do Option 2 instead, if that suits your development and/or build workflow better.

No arquivo de projeto, entre as marcas de abertura e fechamento do primeiro elemento <PropertyGroup>, adicione esse XML.In your project file, between the opening and closing tags of the first <PropertyGroup> element, add this XML.

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

Este é um exemplo da aparência do arquivo depois que você tiver editado os primeiros três valores.Here's an example of how that might look after you've edited the first three values.

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

Salve e feche o arquivo, e recompile o projeto.Save and close, and rebuild your project.

Observação Sempre que você alterar o valor Language=, precisará sincronizar essa alteração com o idioma padrão do app no designer do manifesto (abrindo Package.appxmanifest).Note Any time you change the Language= value, you need to synchronize that change with your app's default language in the manifest designer (by opening Package.appxmanifest).