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 assemblies 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 implantação de assembly satélite, você cria um aplicativo com um assembly padrão (que normalmente é o assembly principal) e um assembly satélite para cada cultura suportada pelo aplicativo. Como os assemblies satélite não fazem parte do assembly principal, você pode facilmente substituir ou atualizar recursos correspondentes a uma cultura específica sem substituir o assembly principal do aplicativo.
Determine cuidadosamente quais recursos irão compor o assembly de recursos padrão do seu aplicativo. Como ele faz parte do assembly principal, qualquer alteração nele exigirá que você substitua o assembly 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 um aplicativo bem projetado, o uso de recursos nunca deve 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, 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 uma cultura não for atribuída explicitamente, recuperando a cultura de interface do usuário de thread padrão da CultureInfo.DefaultThreadCurrentUICulture propriedade.
Se uma cultura de interface do usuário de thread padrão não for atribuída explicitamente, recuperando a cultura para o usuário 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 CultureInfo páginas e CultureInfo.CurrentUICulture referência.
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 um assembly ou armazenados em um arquivo .resources binário autônomo. É útil quando você não sabe os nomes precisos dos recursos que estão 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 em um assembly ou em um arquivo .resources binário autônomo. 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.