Partilhar via


Recursos em aplicativos .NET

Quase todos os aplicativos com qualidade de produção precisam usar 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 de 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 confiar em dados codificados que são armazenados em vários locais.

O .NET fornece suporte abrangente para a criação e localização de recursos. Além disso, o .NET oferece 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 recursos como um repositório para dados do aplicativo, particularmente para cadeias de caracteres que, de outra forma, poderiam 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 (Resource File Generator) para compilá-los em arquivos binários .resources. Esses arquivos podem ser incorporados no arquivo executável do aplicativo por um compilador de linguagem. Para obter mais informações sobre como criar recursos, consulte Criar arquivos de recursos.

Você também pode localizar os recursos do seu 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 não houver recursos adequados disponíveis. 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 conjuntos de satélites autônomos. Para obter mais informações, consulte Criar conjuntos de satélite.

Empacotar e implantar recursos

Você implanta recursos de aplicativos localizados em assemblies satélites. Uma montagem satélite contém os recursos de uma única cultura; ele não contém nenhum código de aplicativo. No modelo de implementação de assembly satélite, cria-se uma aplicação com um assembly padrão (que é normalmente o assembly principal) e um assembly satélite para cada cultura suportada pela aplicação. Como os assemblies satélite não fazem parte do assembly principal, pode-se facilmente substituir ou atualizar recursos correspondentes a uma cultura específica sem a necessidade de substituir o assembly principal da aplicação.

Determine cuidadosamente quais recursos irão compor o assembly de recursos padrão do seu aplicativo. Como isso faz parte do conjunto principal, qualquer alteração nele exigirá que o/a substitua o conjunto principal. Se você não fornecer um recurso padrão, uma exceção será lançada quando o processo de fallback do recurso tentar localizá-lo. Em uma aplicação bem projetada, o uso de recursos nunca deveria lançar uma exceção.

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

Recuperar recursos

Em tempo de execução, uma aplicação 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 uma cultura não for atribuída explicitamente, será necessário recuperar a cultura padrão de interface de utilizador do thread a partir da propriedade CultureInfo.DefaultThreadCurrentUICulture.

  • Se não for atribuída explicitamente uma cultura de interface do utilizador predefinida para a thread, esta será recuperada com base na cultura do utilizador atual no computador local. As implementações .NET em execução no Windows fazem isso chamando a função do Windows GetUserDefaultUILanguage .

Para obter 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 atual da interface do usuário 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. Estes são, entre outros:

  • A ResourceReader classe, que permite enumerar recursos incorporados em uma assemblagem ou armazenados em um arquivo .resources binário autónomo. É útil quando não se sabe os nomes exatos dos recursos disponíveis em tempo de execução.

  • 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 num conjunto ou num ficheiro binário .resources independente. Você também pode desenvolver uma IResourceReader implementação que permite usar a ResourceSet classe para recuperar recursos de alguma outra fonte.

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

Ver também