Recuperando Recursos in Satellite Assemblies

Idealmente, você deve empacotar os recursos para o padrão ou assembly neutra com o assembly principal e criar um asssembly satélite separado para cada linguagem que ofereça suporte a seu aplicativo.The Classe recurso gerente fornece acesso a s recurso específicos da cultura em time de execução e controla como o aplicativo recupera recurso s usando o recurso processo de fallback.Para obter mais informações, consulte o subtópico "Processo de fallback de recursos" naEmpacotamento e implantação de recursos tópico. Você é incentivados a acessar recursos através de um dos construtores para o ResourceManager classe.Isso requer recursos sejam que um compilados em assemblies satélites, ou parte assembly principal do aplicativo.

The ResourceManager determina quais recursos para recuperar com base na thread's corrente Propriedade CultureInfo.CurrentUICulture.Por exemplo, se um aplicativo é compilado com o padrão de recursos do linguagem inglês e dois assemblies de satélite que contém recursos para francês e recursos de linguagem alemão e o CurrentUICulture propriedade estiver definida como "de", o ResourceManager recupera os recursos de alemão.Para obter mais informações sobre como conjunto o CurrentUICulture propriedade, consulte Usando a propriedade CurrentUICulture.

O exemplo a seguir utiliza o Método ResourceManager.GetString para recuperar e exibir um recurso de cadeia de caracteres.

…
Dim private rm As ResourceManager
rm = New ResourceManager("MyStrings", Me.GetType().Assembly)
Console.Writeline(rm.GetString("string1"))
…
…
private ResourceManager rm;
rm = new ResourceManager("MyStrings", this.GetType().Assembly);
Console.Writeline(rm.GetString("string1"));
…

Este código recupera e exibe string1 do arquivo MyStrings. A seqüência real que é carregada depende o thread's corrente CurrentUICulture propriedade .

O exemplo a seguir utiliza o Método ResourceManager.GetObject para recuperar e exibir um recurso binário (sistema autônomo uma imagem gráfica).

…
Dim private rm As ResourceManager
rm = New ResourceManager("MyImages", Me.GetType().Assembly)
PictureBox.Image = Ctype(rm.GetObject("MyObject"), System.Drawing.Image)
…
…
private ResourceManager rm;
rm = new ResourceManager("MyImages", this.GetType().Assembly);
PictureBox.Image = (System.Drawing.Image)rm.GetObject("MyObject");
…

Esse código carrega o objeto chamado MyObject arquivo de recurso MyImages. Ele projeta MyObject para um Imagem tipo e a atribui à propriedade de imagem de PictureBox. O objeto real que é carregado depende CurrentUICulture propriedade .

The Classe de ResourceSet armazena todos os recursos localizados para uma cultura única.A ResourceSet não usa o processo de fallback de recursos.Portanto, um ResourceSet não é tão útil em aplicativos localizados.

Suporte a controle de versão para assemblies satélites

Por padrão, quando o ResourceManager recupera recursos solicitados, ele procura assemblies satélites com números de versão que corresponde ao número de versão do assembly principal.Após a implantação de um aplicativo, talvez você queira atualização o assembly principal ou assemblies satélites de recurso específico.O .NET estrutura oferece suporte para o controle de versão assembly principal e assemblies satélites.

The Classe SatelliteContractVersionAttribute fornece suporte de controle de controle de versão para um assembly principal.Especificando o SatelliteContractVersionAttribute no assembly principal de um aplicativo permite que você atualização e reimplantar um assembly principal sem atualizar seus assemblies satélites.Depois de atualizar o assembly principal, incrementar o número da versão do assembly principal mas deixe o número da versão contrato do satélite sistema autônomo está.Quando o ResourceManager recupera recursos solicitados, ele carregará o satélite assembly versão especificada por esse atributo.

Assemblies de diretiva de publicador fornecem suporte para controle de versão assemblies satélites.Você pode atualização e reimplantar um asssembly satélite sem atualizar o assembly principal.Depois que você atualização um asssembly satélite, incrementar seu número de versão nem enviar junto com um assembly de diretiva de publicador.No assembly da diretiva de publicador, especifique seu novo asssembly satélite é compatível com sua versão anterior.Embora o ResourceManager usará contrato satélite existente do assembly principal número de versão para recuperar recursos solicitados, a versão atualizada correta do assembly será recuperada porque irá BIND o carregador de assembly para a versão do asssembly satélite especificada no assembly de diretiva de publicador.Para mais informações sobre assemblies de diretiva de publicador, consulte Criando um arquivo de política do publicador.

Para habilitar o suporte de controle de controle de versão de assembly completo, é recomendável que você implantar assemblies fortes no cache de assemblies global e implantar assemblies sem nomes fortes no diretório de aplicativo.Se você desejar implantar fortes assemblies no diretório de aplicativo, não será capaz de incrementar o número da versão de um asssembly satélite quando você atualização o assembly.Em vez disso, você deve executar uma atualização no local em que você substitua o código existente com o código atualizado e manter o mesmo número de versão.Por exemplo, se você desejar atualizar a versão 1.0.0.0 de um asssembly satélite com o nome de assembly totalmente especificado "myApp.Recursos, versão 1.0.0.0, cultura = = de, PublicKeyToken = b03f5f11d50a3a myApp.Recursos", substituí-lo com o myApp.Recursos.dll atualizado que foi compilado com o mesmo nome de assembly totalmente especificado", versão 1.0.0.0, cultura = = de, PublicKeyToken = b03f5f11d50a3a".Observe que como o número de versão não pode ser incrementado, usando as atualizações in-loco em arquivos de asssembly satélite torna difícil para um aplicativo determinar com precisão a versão de um asssembly satélite.

Para obter mais informações no controle de versão do assembly, consulte Versionamento de assembly and Como o tempo de execução Localiza Assemblies.

Consulte também

Conceitos

Recursos em aplicativos

Empacotamento e implantação de recursos

Como o Runtime Localiza Assemblies

Recuperando recursos em arquivos .Resources

Referência

ResourceManager