Criando Assemblies Satélites
O modelo hub e spoke descrito o empacotamento e implantação de recursos tópico é a implementação de design recomendado para desenvolver aplicativos com recursos.
O modelo de hub e spoke requer que você coloque recursos em locais específicos, para que possam ser facilmente localizados e usados. Se isso não os recursos de compilação e o nome, conforme o esperado, ou se você não colocá-los nos locais corretos, o common language runtime não consiga localizá-los. Como resultado, o runtime usa o conjunto de recursos padrão. Para obter mais informações sobre nomes de recursos, consulte Classe CultureInfo ou empacotamento e implantação de recursos.
Compilando Assemblies satélite
Use o O vinculador do Assembly (Al.exe) para compilar arquivos. Resources em assemblies satélites. AL.exe cria um assembly de arquivos. Resources que você especificar. Por definição, assemblies satélites só podem conter recursos. Eles não podem conter qualquer código executável.
O comando de AL.exe a seguir cria um assembly satélite para o aplicativo MyApp do arquivo strings.de.resources.
al /t:lib /embed:strings.de.resources /culture:de /out:MyApp.resources.dll
O comando a seguir Al.exe também cria um assembly satélite para o aplicativo MyApp do arquivo strings.de.resources. O /template opção faz com que o assembly satélite herdar de metadados do assembly do assembly pai MyApp.dll.
al /t:lib /embed:strings.de.resources /culture:de /out:MyApp.resources.dll
/template:MyApp.dll
A tabela a seguir explica as opções de Al.exe usadas nestes exemplos mais detalhadamente.
Opção |
Descrição |
---|---|
/t:lib |
O /t opção especifica que o seu assembly satélite é compilado em um arquivo. dll (biblioteca). Um assembly satélite não pode ser executado porque ele não contém código e não é um assembly principal de aplicativo. Portanto, você deve salvar assemblies satélites como DLLs. |
/ incorporar:strings.de.resources |
O / incorporar opção especifica o nome do arquivo de origem para usar quando Al.exe compila o assembly. Observe que você pode incorporar vários arquivos. Resources em um assembly satélite. No entanto, se você estiver seguindo o modelo hub e spoke, você deve compilar um assembly de satélite para cada cultura. No entanto, você pode criar o arquivos de Resources separada para objetos e cadeias de caracteres. |
/ cultura:de |
O /culture opção especifica a cultura do recurso para compilar. O runtime usa essas informações quando procura os recursos para uma cultura especificada. Se você omitir esta opção, Al.exe ainda compila o recurso, mas o tempo de execução não consiga localizá-lo quando um usuário solicita a ele. |
/out:MyApp.resources.dll |
O /out opção especifica o nome do arquivo de saída. O nome deve seguir o padrão de nomeação baseName. Resources.extensão, onde o baseName é o nome do assembly principal e o extensão é uma extensão viável (como. dll). Observe que o tempo de execução não é capaz de determinar a cultura de um assembly satélite com base no nome do arquivo de saída. Portanto, é importante especificar uma cultura com o /culture opção descrita acima. |
/Template:nome de arquivo |
O /template opção especifica um assembly do qual herdar todos os metadados do assembly, exceto o campo da cultura. O assembly que herda do assembly satélite deve ter um nome forte. |
Para obter uma lista completa das opções disponíveis com o Al.exe, consulte O vinculador do Assembly (Al.exe).
Compilando Assemblies Satélites com nomes fortes
Se você quiser instalar assemblies satélites no cache global de assemblies, eles devem ter nomes fortes. Assemblies de nomes fortes são assinados com um par de chaves pública/particular válido. Para obter mais informações sobre nomes fortes, consulte Strong-Named Assemblies.
Quando você estiver desenvolvendo um aplicativo, é improvável que você terá acesso a par de chaves pública/privada final. Para instalar um assembly satélite no cache global de assemblies e garantir que ele funciona como esperado, você pode usar uma técnica chamada assinatura atrasada. Quando você atrasar a assinatura de um assembly, você reservar espaço no arquivo de assinatura de nome forte no tempo de compilação. A assinatura real será adiada até uma data posterior quando o par de chaves pública/privada final está disponível.
Como obter a chave pública
Para atrasar a assinatura de um assembly, você deve ter acesso à chave pública. Você poderá obter a chave pública real da organização em sua empresa que irá fazer a assinatura eventual ou criar um usando chaves públicas de Strong Name Tool (sn. exe).
O seguinte comando sn. exe cria um par de chaves pública/particular teste e o salva no arquivo TestKeyPair.snk. O – k opção especifica o sn. exe para criar um novo par de chaves e salvá-lo no arquivo especificado.
sn –k TestKeyPair.snk
Você pode extrair a chave pública do arquivo que contém o par de chaves de teste. O comando a seguir extrai a chave pública do TestKeyPair.snk e o salva em PublicKey.snk.
sn –p TestKeyPair.snk PublicKey.snk
Atraso na Assinatura de um Assembly
Depois que você obteve ou criou a chave pública, use o O vinculador do Assembly (Al.exe) compilar o assembly e especificar a assinatura atrasada.
O comando de AL.exe a seguir cria um assembly satélite de nome forte para o aplicativo MyApp partir do strings.ja.resources arquivo.
al /t:lib /embed:strings.ja.resources /culture:ja /out:MyApp.resources.dll /delay+ /keyfile:PublicKey.snk
O /delay+ opção especifica para atrasar a assinatura do assembly. O /keyfile: opção especifica o nome do arquivo de chave que contém a chave pública para usar para atrasar a assinatura do assembly.
Para obter mais informações sobre a assinatura atrasada, consulte Delay Signing an Assembly.
Observe que os assemblies de nomes fortes contêm informações de versão, o runtime usa para determinar qual assembly usar para atender a uma solicitação de ligação. Para obter mais informações sobre esse tópico, consulte Versionamento de Assembly.
Renovando a assinatura de um Assembly
Posteriormente, um assembly satélite assinado de atraso deve ser assinado novamente com o par de chaves real. Você pode fazer isso usando sn. exe.
Os seguintes sinais de comando sn. exe MyApp.resources.dll com o par de chave real armazenado no arquivo RealKeyPair.snk. O – r opção especifica o sn. exe para assinar novamente um assembly anteriormente assinado ou assinado de atraso.
sn –R MyApp.resources.dll RealKeyPair.snk
Instalar um Assembly satélite no Cache Global de assemblies
Cache de assembly global é o primeiro local em que o runtime procura por recursos no processo de fallback de recurso. Para obter mais informações, consulte o "processo de Fallback de recurso" subtópico na Empacotamento e implantação de recursos tópico. Portanto, é importante saber como instalar recursos para o global assembly cache. Um assembly satélite que você tenha compilado com um nome forte é pronto para instalar o cache global de assemblies. Você pode instalar assemblies para o cache usando o Global Assembly Cache Tool (Gacutil. exe).
O seguinte comando Gacutil. exe instala MyApp.resources.dll na cache global de assemblies.
gacutil /i:MyApp.resources.dll
O /i opção especifica a Gacutil. exe para instalar o assembly especificado no cache global de assemblies. Como resultado do comando, uma entrada é colocada no cache, que permite que as entradas desse arquivo. Resources para serem acessados. Depois de instalado no cache, o recurso especificado está disponível para todos os aplicativos que são projetados para usá-lo.
Locais de diretório para Assemblies de satélite não está instalados no Cache Global de assemblies
Após ter compilado seus assemblies satélites, todas elas têm o mesmo nome. O tempo de execução diferencia-los como base a cultura especificada em tempo de compilação com o do Al.exe /culture opção e pelo local do diretório do assembly. Você deve colocar seus assemblies satélites em locais de diretório esperada.
A ilustração a seguir mostra um requisitos exemplo de estrutura e o local de diretório para aplicativos que você não estiver instalando na global assembly cache. Os itens com as extensões de arquivo. txt e. Resources não serão incluído com o aplicativo final. Esses são os arquivos de recurso intermediário usados para criar os módulos de recursos satélite final. Neste exemplo, você poderia substituir os arquivos. resx para arquivos. txt. Os arquivos. resx são o único tipo de arquivo de recurso intermediário que pode conter objetos.
Diretório do assembly satélite
Observação
Se seu aplicativo incluir recursos para subcultures, coloque cada subcultura em seu próprio diretório.Não coloque subcultures em subdiretórios do diretório do sua cultura principal.
Consulte também
Referência
Sn. exe (ferramenta de nome forte)
Gacutil. exe (ferramenta de Cache de Assembly Global)
Conceitos
Empacotamento e implantação de recursos