El modelo de concentrador y radio requiere colocar recursos en ubicaciones específicas para que sea fácil ubicarlos y usarlos.The hub-and-spoke model requires that you place resources in specific locations so that they can be easily located and used.Si no compila los recursos y les asigna el nombre de la manera prevista, o si no los coloca en las ubicaciones correctas, Common Language Runtime no podrá encontrarlos y usará en su lugar los recursos de la referencia cultural predeterminada.If you do not compile and name resources as expected, or if you do not place them in the correct locations, the common language runtime will not be able to locate them and will use the resources of the default culture instead.Para tener acceso automáticamente a los recursos localizados se usa el Administrador de recursos de .NET Framework, representado por un objeto ResourceManager.The .NET Framework Resource Manager, represented by a ResourceManager object, is used to automatically access localized resources.El Administrador de recursos requiere lo siguiente:The Resource Manager requires the following:

El ensamblado satélite debe tener el mismo nombre que la aplicación y debe usar la extensión de nombre de archivo ".resources.dll".The satellite assembly must have the same name as the application, and must use the file name extension ".resources.dll".Por ejemplo, si una aplicación se denomina Example.exe, el nombre de cada ensamblado satélite debe ser Example.resources.dll.For example, if an application is named Example.exe, the name of each satellite assembly should be Example.resources.dll.Tenga en cuenta que el nombre del ensamblado satélite no indica la referencia cultural de sus archivos de recursos.Note that the satellite assembly name does not indicate the culture of its resource files.Aun así, el ensamblado satélite aparece en un directorio que especifica la referencia cultural.However, the satellite assembly appears in a directory that does specify the culture.

Especifica la referencia cultural del recurso que se va a compilar.Specifies the culture of the resource to compile.Common Language Runtime usa esta información cuando busca los recursos para la referencia cultural especificada.The common language runtime uses this information when it searches for the resources for a specified culture.Si se omite esta opción, Al.exe compilará igualmente el recurso, pero el tiempo de ejecución no podrá encontrarlo cuando un usuario lo solicite.If you omit this option, Al.exe will still compile the resource, but the runtime will not be able to find it when a user requests it.

-out: Example.resources.dll-out: Example.resources.dll

Especifica el nombre del archivo de salida.Specifies the name of the output file.El nombre debe seguir la convención de nomenclatura baseName.resources.extension, donde baseName es el nombre del ensamblado principal y extension es una extensión de nombre de archivo válida (por ejemplo, .dll).The name must follow the naming standard baseName.resources.extension, where baseName is the name of the main assembly and extension is a valid file name extension (such as .dll).Tenga en cuenta que el tiempo de ejecución no puede determinar la referencia cultural de un ensamblado satélite a partir del nombre de su archivo de salida; debe usar la opción /culture para especificarla.Note that the runtime is not able to determine the culture of a satellite assembly based on its output file name; you must use the /culture option to specify it.

Si usa la línea de comandos en lugar de Visual Studio para crear el ejemplo, debe modificar la llamada al constructor de clase ResourceManager de la siguiente manera: ResourceManager rm = new ResourceManager("Greetings", typeof(Example).Assembly);If you are using the command line rather than Visual Studio to create the example, you should modify the call to the ResourceManager class constructor to the following: ResourceManager rm = new ResourceManager("Greetings", typeof(Example).Assembly);

Después, ya puede ejecutar el ejemplo.You can then run the example.Seleccionará aleatoriamente como referencia cultural actual una de las referencias culturales admitidas y mostrará un saludo localizado.It will randomly make one of the supported cultures the current culture and display a localized greeting.

En lugar de instalar los ensamblados en el subdirectorio de una aplicación local, puede instalarlos en la caché global de ensamblados.Instead of installing assemblies in a local application subdirectory, you can install them in the global assembly cache.Esto es especialmente útil si tiene bibliotecas de clases y ensamblados de recursos de bibliotecas de clases que usan varias aplicaciones.This is particularly useful if you have class libraries and class library resource assemblies that are used by multiple applications.

Obtener la clave públicaObtaining the Public Key

Para retrasar la firma de un ensamblado, debe tener acceso a la clave pública.To delay sign an assembly, you must have access to the public key.Puede obtener la clave pública real de la organización que se encargará de la firma, o bien puede crear una clave pública mediante la herramienta de nombre seguro (Sn.exe).You can either obtain the real public key from the organization in your company that will do the eventual signing, or create a public key by using the Strong Name Tool (Sn.exe).

Volver a firmar un ensambladoRe-signing an Assembly

Antes de implementar la aplicación, debe volver a firmar el ensamblado satélite con firma retrasada mediante el par de claves real.Before you deploy your application, you must re-sign the delay signed satellite assembly with the real key pair.Para ello, use Sn.exe.You can do this by using Sn.exe.

Si no está usando Visual Studio, use el siguiente comando de la herramienta de nombre seguro (Sn.exe) para crear un par de claves pública y privada denominado ResKey.snk:If you are not using Visual Studio, use the following Strong Name Tool (Sn.exe) command to create a public/private key pair named ResKey.snk:

Si usa la línea de comandos en lugar de Visual Studio para crear el ejemplo, debe modificar la llamada al constructor de clase ResourceManager de la siguiente manera: ResourceManager rm = new ResourceManager("Strings",typeof(Example).Assembly);.If you are using the command line rather than Visual Studio to create the example, you should modify the call to the ResourceManager class constructor to ResourceManager rm = new ResourceManager("Strings",typeof(Example).Assembly);.

Registre StringLibrary.dll y cada uno de sus ensamblados satélite en la caché global de ensamblados mediante el comando siguiente:Register StringLibrary.dll and each of its satellite assemblies in the global assembly cache by using the following command:

gacutil -i filename

donde filename es el nombre del archivo que se va a registrar.where filename is the name of the file to register.

Si está usando Visual Studio, cree un proyecto de aplicación de consola denominado Example, agréguele una referencia a StringLibrary.dll y el siguiente código fuente, y compílelo.If you are using Visual Studio, create a new Console Application project named Example, add a reference to StringLibrary.dll and the following source code to it, and compile.