Compartilhar via


Recursos em aplicativos .NET

Quase todos os aplicativos com qualidade de produção precisam fazer uso de recursos. Um recurso é qualquer dado não executável que é implantado logicamente com um aplicativo. Um recurso pode ser exibido em um aplicativo como mensagens de erro ou como parte da interface do usuário. Os recursos podem conter dados em várias formas, incluindo cadeias de caracteres, imagens e objetos persistentes. (Para gravar objetos persistentes em um arquivo de recurso, os objetos devem ser serializáveis.) Armazenar seus dados em um arquivo de recurso permite que você altere os dados sem recompilar todo o aplicativo. Ele também permite que você armazene dados em um único local e elimina a necessidade de contar com dados embutidos em código armazenados em vários locais.

O .NET fornece suporte abrangente para a criação e localização de recursos. Além disso, o .NET dá suporte a um modelo simples para empacotar e implantar recursos localizados.

Criar e localizar recursos

Em um aplicativo não localizado, você pode usar arquivos de recurso como um repositório para dados de aplicativo, especialmente para cadeias de caracteres que, de outra forma, podem ser codificadas em vários locais no código-fonte. Mais comumente, você cria recursos como arquivos de texto (.txt) ou XML (.resx) e usa Resgen.exe (Gerador de Arquivos de Recurso) para compilá-los em arquivos .resources binários. Esses arquivos podem ser inseridos no arquivo executável do aplicativo por um compilador de idiomas. Para obter mais informações sobre como criar recursos, consulte Criar arquivos de recurso.

Você também pode localizar os recursos do aplicativo para culturas específicas. Isso permite que você crie versões localizadas (traduzidas) de seus aplicativos. Ao desenvolver um aplicativo que usa recursos localizados, você designa uma cultura que serve como a cultura neutra ou de fallback cujos recursos são usados se nenhum recurso adequado estiver disponível. Normalmente, os recursos da cultura neutra são armazenados no executável do aplicativo. Os recursos restantes para culturas localizadas individuais são armazenados em componentes satélite independentes. Para obter mais informações, consulte Criar assemblies satélites.

Empacotar e implantar recursos

Implante recursos de aplicativo localizados em assemblies satélite. Um módulo satélite contém os recursos de uma única cultura; ele não contém nenhum código de aplicação. No modelo de implantação do assembly satélite, você cria um aplicativo com um assembly padrão (que geralmente é o assembly principal) e um assembly satélite para cada cultura com a qual o aplicativo é compatível. Como os assemblies satélite não fazem parte do assembly principal, você pode substituir ou atualizar facilmente os recursos correspondentes a uma cultura específica sem substituir o assembly principal do aplicativo.

Determine cuidadosamente quais recursos comporão o assembly de recursos padrão do aplicativo. Como ele faz parte do conjunto principal, todas as alterações nele exigirão que você substitua o conjunto principal. Se você não fornecer um recurso padrão, uma exceção será gerada quando o processo de fallback do recurso tentar encontrá-lo. Em um aplicativo bem projetado, o uso de recursos nunca deve gerar uma exceção.

Para obter mais informações, consulte o artigo Empacotamento e Implantação de Recursos .

Recuperar recursos

Em runtime, um aplicativo carrega os recursos localizados apropriados por thread, com base na cultura especificada pela CultureInfo.CurrentUICulture propriedade. Esse valor de propriedade é derivado da seguinte maneira:

  • Atribuindo diretamente um CultureInfo objeto que representa a cultura localizada à Thread.CurrentUICulture propriedade.

  • Se não houver uma cultura explicitamente designada, recuperando a cultura padrão da interface do usuário do thread pela propriedade CultureInfo.DefaultThreadCurrentUICulture.

  • Se uma cultura de interface do usuário do thread padrão não for explicitamente atribuída, recuperando a cultura para o usuário atual no computador local. Implementações do .NET em execução no Windows fazem isso chamando a função do Windows GetUserDefaultUILanguage .

Para mais informações sobre como a cultura atual da interface do usuário é definida, consulte as páginas de referência CultureInfo e CultureInfo.CurrentUICulture.

Em seguida, você pode recuperar recursos para a cultura de interface do usuário atual ou para uma cultura específica usando a System.Resources.ResourceManager classe. Embora a ResourceManager classe seja mais comumente usada para recuperar recursos, o System.Resources namespace contém tipos adicionais que você pode usar para recuperar recursos. Elas incluem:

  • ResourceReader classe, que permite enumerar recursos incorporados em um assembly ou armazenados em um arquivo .resources binário independente. É útil quando você não sabe os nomes precisos dos recursos que estão disponíveis em runtime.

  • A ResXResourceReader classe, que permite recuperar recursos de um arquivo XML (.resx).

  • A ResourceSet classe, que permite recuperar os recursos de uma cultura específica sem observar regras de fallback. Os recursos podem ser armazenados em um assembly ou em um arquivo binário .resources independente. Você também pode desenvolver uma implementação IResourceReader que permite que você use a ResourceSet classe para recuperar recursos de alguma outra origem.

  • A ResXResourceSet classe, que permite recuperar todos os itens em um arquivo de recurso XML na memória.

Consulte também