Compartir a través de


Empaquetar recursos

Hasta este momento, en este tutorial se ha supuesto que utiliza un solo idioma predeterminado para los recursos. Ahora vamos a considerar un escenario más complejo, en el que hay conjuntos paralelos de recursos de varias referencias culturales. Esto le permitirá construir una sola aplicación que se ejecuta en múltiples referencias culturales. Es decir, al detectar la referencia cultural del usuario y cargar los recursos apropiados en tiempo de ejecución, la aplicación se puede adaptar al usuario. Este enfoque también posibilita la modificación de los recursos, puede que mediante la actualización de una cadena o incluso al agregar una nueva referencia cultural, sin necesidad de solicitar volver a compilar y distribuir toda la aplicación. Esto resulta particularmente cómodo cuando los recursos se encuentran en un directorio compartido y varios usuarios pueden tener acceso automáticamente a los cambios.

Las dos aplicaciones de ejemplo localizadas que se incluyen en este tutorial (WorldCalc y Graphic) utilizan ensamblados satélite privados. Privado significa que no se encuentra en la GAC (Global Assembly Cache, caché de ensamblados global); satélite hace referencia a que se trata de ensamblados que contienen solamente recursos (o bibliotecas DLL) que funcionan junto con otro ensamblado principal en el que se encuentra el código de la aplicación. El ensamblado principal también contiene los recursos de referencias culturales predeterminadas o neutras, que se utilizan cuando no existe un recurso localizado determinado. Los recursos del ensamblado principal se encuentran en el directorio de la aplicación en archivos .resources y el compilador los incrusta en el ensamblado. Los que se creen después se pueden incrustar con la herramienta Generación de ensamblados (AL).

Nota Para obtener más información acerca de AL, vea Apéndice B: Herramientas de recursos.

Si se van a compartir los ensamblados de recursos, lo que significa que estarán en la GAC y podrán usarlos varias aplicaciones, es necesario asignarles un nombre seguro, para lo que se les proporcionará información adicional de claves y de número de versión. Además, es posible que desee agregar el atributo SatelliteContractVersionAttribute, que le permitirá crear versiones de los ensamblados de recursos satélites, independientemente del ensamblado principal y sin necesidad de utilizar archivos de directivas de configuración. Para obtener más información acerca de los ensamblados con nombres seguros, vea Empaquetar e implementar aplicaciones de .NET Framework.

Si examina cada una de estas aplicaciones, observará que hay una serie de subdirectorios detrás del directorio de la aplicación y que cada uno tiene un nombre que corresponde a una etiqueta de referencia cultural y contiene la información de recursos sin formato además del correspondiente ensamblado satélite, si se creó. Este diseño subraya dos cuestiones importantes: un ensamblado determinado puede contener recursos de una sola referencia cultural y los recursos de cada referencia cultural se almacenan en un subdirectorio independiente cuyo nombre es el de la etiqueta de la referencia cultural.

Cadenas: en el ejemplo WorldCalc se ilustra la localización de cadenas. Las cadenas se almacenan en pares de nombre y valor en archivos denominados MyStrings.txt en el directorio de la aplicación (para el idioma predeterminado, inglés) y las dos referencias culturales localizadas (de para alemán y de-CH para alemán de Suiza).

El proceso de generación (en Build.bat) de la aplicación de ejemplo WorldCalc sigue los pasos siguientes (aquí se muestran organizados de forma más lógica que en el archivo Build.bat real).

  1. Generar los componentes math.dll y parser.dll:

    csc ... math.cs
    csc ... parser.cs
    
  2. Generar el archivo de recursos predeterminado y todos los archivos .resources localizados con Resgen.exe:

    resgen MyStrings.txt MyStrings.resources
    resgen MyStrings.de.txt MyStrings.de.resources
    resgen MyStrings.de-CH.txt MyStrings.de-CH.resources
    
  3. Utilizar la herramienta AL para crear los ensamblados satélite, incrustar (o vincular) los recursos y establecer la referencia cultural:

    al /out:WorldCalc.Resources.Dll /v:1.0.0.0 /c:de /embed:MyStrings.de.resources,MyStrings.de.resources,Private
    al /out:WorldCalc.Resources.Dll /v:1.0.0.0 /c:de-CH /embed:MyStrings.de-CH.resources,MyStrings.de-CH.resources,Private
    

    Nota En las cadenas de referencias culturales no se distinguen mayúsculas y minúsculas.

  4. Compilar la aplicación propiamente dicha y vincular los recursos predeterminados con el modificador /res:

    csc ... /target:winexe ... /addmodule:parser.dll /r:System.Windows.Forms.dll /r:System.Drawing.dll /r:System.dll /r:math\math.dll /res:MyStrings.resources WorldCalc.cs
    

    A continuación se muestra el código equivalente en Visual Basic:

    vbc ... /target:winexe ... /addmodule:parser.dll /r:System.Windows.Forms.dll /r:System.Drawing.dll /r:System.dll /r:math\math.dll /res:MyStrings.resources WorldCalc.vb
    

A partir de este punto, para agregar otra referencia cultural solamente hace falta crear el archivo de texto apropiado que contenga los recursos y repetir los pasos 2 y 3.

Imágenes: la localización de imágenes se muestra en el ejemplo Graphic. El proceso de generación de esta aplicación de ejemplo es similar al de WorldCalc, pero agrega un paso que convierte las imágenes en archivos .resx:

resxgen /i:un.jpg /o:Images.resx /n:flag
cd en
resxgen /i:en.jpg /o:Images.en.resx /n:flag
cd ..\en-au
...

Vea también

Recuperar recursos mediante código | Resumen de recursos | Apéndice A: Información adicional de recursos | Apéndice B: Herramientas de recursos