Partilhar via


Gerencie recursos com o MRT Core

O MRT Core é uma versão simplificada do moderno do Sistema de Gerenciamento de Recursos do Windows que é distribuído como parte do o SDK do Aplicativo Windows.

O MRT Core possui funcionalidades para o tempo de compilação e o tempo de execução. No momento da compilação, o sistema cria um índice de todas as diferentes variantes dos recursos que são empacotados com seu aplicativo. Esse índice é o Índice de Recursos do Pacote, ou PRI, e também está incluído no pacote do seu aplicativo.

Pré-requisitos

Para usar as APIs MRT Core no SDK de Aplicações do Windows:

  1. Transfira e instale a versão mais recente do SDK de Aplicações Windows. Para obter mais informações, consulte Introdução ao WinUI.
  2. Siga as instruções para criar seu primeiro projeto WinUI 3 ou para usar o SDK do aplicativo Windows em um projeto existente.

Para saber mais sobre a disponibilidade do MRT Core no SDK do Windows Apps, consulte os canais de lançamento .

Arquivo de índice de recursos de pacote (PRI)

Cada pacote de aplicativo deve conter um índice binário dos recursos no aplicativo. Esse índice é criado em tempo de compilação e está contido em um ou mais arquivos PRI. Cada arquivo PRI contém uma coleção nomeada de recursos, conhecida como um mapa de recursos.

Um arquivo PRI contém recursos de cadeia de caracteres reais. Recursos binários e de caminho de arquivo incorporados são indexados diretamente dos arquivos de projeto. Um pacote normalmente contém um único arquivo PRI por idioma, chamado resources.pri. O arquivo resources.pri na raiz de cada pacote é carregado automaticamente quando o objeto ResourceManager é instanciado.

Os arquivos PRI contêm apenas dados, portanto, não usam o formato executável portátil (PE). Eles são projetados especificamente para serem apenas de dados.

Observação

Para aplicativos .NET, no Windows App SDK versão 0.8 e posteriores, a propriedade Build Action file para arquivos de recursos no Visual Studio é definida automaticamente, reduzindo a necessidade de configuração manual do projeto. A versão 1.0 introduziu o problema 1674. Isso é corrigido em 1.1 (do canal estável), mas a correção requer o .NET SDK 6.0.300 ou posterior. Se você estiver usando uma versão inferior do SDK do .NET, continue a usar a solução alternativa nas notas de versão 1.0.

Acesse recursos do aplicativo com o MRT Core

O MRT Core fornece várias maneiras diferentes de acessar os recursos do seu aplicativo.

Observação

No Windows App SDK 1.0 Preview 1 e versões posteriores, as APIs MRT Core estão no namespace Microsoft.Windows.ApplicationModel.Resources . Em versões anteriores, eles estão no namespace Microsoft.ApplicationModel.Resources .

Funcionalidade básica com o ResourceLoader

A maneira mais simples de acessar os recursos do seu aplicativo programaticamente é usando a classe ResourceLoader. ResourceLoader fornece acesso básico a recursos de cadeia de caracteres do conjunto de arquivos de recursos, bibliotecas referenciadas ou outros pacotes.

Funcionalidade avançada com o ResourceManager

A classe ResourceManager fornece informações adicionais sobre recursos, como enumeração e inspeção. Isso vai além do que a classe ResourceLoader fornece.

Um objeto ResourceCandidate representa um único valor de recurso concreto e seus qualificadores, como a cadeia de caracteres "Hello World" para inglês ou "logo.scale-100.jpg" como um recurso de imagem qualificado específico para a resolução de escala 100.

Os recursos disponíveis para um aplicativo são armazenados em coleções hierárquicas, que você pode acessar com um objeto ResourceMap. A classe ResourceManager fornece acesso às várias instâncias de ResourceMap de nível superior usadas pela aplicação, que correspondem aos vários pacotes da aplicação. O valor ResourceManager.MainResourceMap corresponde ao mapa de recursos para o pacote de aplicativo atual e exclui quaisquer pacotes de estrutura referenciados. Cada ResourceMap é nomeado de acordo com o nome do pacote especificado no manifesto do pacote. Dentro de um ResourceMap existem subárvores (consulte ResourceMap.GetSubtree). As subárvores normalmente correspondem aos ficheiros de recursos que contêm o recurso.

O ResourceManager não apenas oferece suporte ao acesso aos recursos de cadeia de caracteres de um aplicativo, mas também mantém a capacidade de enumerar e inspecionar os vários recursos de arquivo. Para evitar colisões entre arquivos e outros recursos que se originam de dentro de um arquivo, todos os caminhos de arquivo indexados residem em uma subárvore reservada "Arquivos" ResourceMap. Por exemplo, o ficheiro '\Images\logo.png' corresponde ao nome do recurso 'Ficheiros/imagens/logo.png'.

Qualificar a seleção de recursos com ResourceContext

Os candidatos a recursos são escolhidos com base em umespecífico ResourceContext , que é uma coleção de valores de qualificador de recursos (idioma, escala, contraste e assim por diante). Um contexto padrão usa a configuração atual do aplicativo para cada valor de qualificador, a menos que seja substituído. Por exemplo, recursos como imagens podem ser qualificados para escala, que varia de um monitor para outro e, portanto, de uma visualização de aplicativo para outra. Por esse motivo, cada exibição de aplicativo tem um contexto padrão distinto. Sempre que recuperar um candidato a recurso, você deve passar uma instância ResourceContext para obter o valor mais apropriado para uma determinada exibição.

Exemplo

Para obter um exemplo que demonstra como usar a API MRT Core, consulte o exemplo MRT Core.

Ver também