Generador de archivos de recursos (Resgen.exe)
Esta herramienta convierte archivos .txt y archivos .resx (formato de recursos basado en XML) en archivos .resources binarios de Common Language Runtime, que se pueden incrustar en un archivo ejecutable binario de motor en tiempo de ejecución o compilar en ensamblados satélite. Para obtener información sobre cómo implementar y recuperar archivos .resources, vea Recursos en aplicaciones.
Resgen.exe realiza las conversiones siguientes:
Convierte archivos .txt en archivos .resources o .resx.
Convierte archivos .resources en archivos de texto o .resx.
Convierte archivos .resx en archivos de texto o .resources.
resgen [parameters] [/compile]filename.extension [outputFilename.extension] [/str:lang[,namespace[,class[,file]]]]
Parámetros
Argumento | Descripción |
---|---|
filename.extension |
Nombre del archivo de entrada que se convierte. El argumento extension debe ser uno de los elementos siguientes:
|
outputFilename.extension |
Nombre del archivo de recursos que se crea. Este argumento es opcional cuando se realiza la conversión de archivos .txt o .resx. Se puede especificar la extensión .resources cuando se convierte un archivo de texto o un archivo .resx en un archivo .resources. Si no se especifica un argumento outputFilename, Resgen.exe agrega una extensión .resources al argumento filename de entrada y escribe el archivo en el directorio que contiene el argumento filename. El argumento outputFilename es obligatorio cuando se realiza la conversión de un archivo .resources. Cuando se convierte un archivo .resources en un archivo de recursos basado en XML, se debe especificar la extensión .resx. Cuando se convierte un archivo .resources en un archivo de texto, se debe especificar la extensión .txt. Sólo se debe convertir un archivo .resources en un archivo .txt cuando el archivo .resources contiene únicamente valores de cadena. |
Opción | Descripción |
---|---|
/compile |
Permite especificar múltiples archivos .resx o .txt para convertirlos en archivos .resources en una sola operación masiva. Si no especifica esta opción, sólo podrá especificar un argumento de archivo de entrada. |
/publicClass |
Crea una clase de recurso con nombre seguro como clase pública. Se omite esta opción si no se utiliza la opción /str:. |
/r: assembly |
Especifica que los tipos se deben cargar desde assembly. Si especifica esta opción, los archivos .resx con una versión anterior de un tipo utilizarán dicho tipo en assembly. |
/str: language[,namespace[,classname[,filename]]] |
Crea un archivo de clase de recursos con establecimiento inflexible de tipos en el lenguaje de programación (C# o Visual Basic) especificado en la opción language. Puede utilizar la opción namespace para especificar el espacio de nombres predeterminado del proyecto, la opción classname para especificar el nombre de la clase generada y la opción filename para especificar el nombre del archivo de clase. |
/usesourcepath |
Especifica que el directorio actual del archivo de entrada se utilizará para resolver las rutas de acceso relativas. |
Comentarios
Resgen.exe convierte archivos empaquetando los métodos implementados por las cuatro clases siguientes:
Clase ResourceReader, que lee un archivo .resources.
Clase ResourceWriter, que crea un archivo .resources a partir de los recursos especificados.
Clase ResXResourceReader, que lee un archivo .resx.
Clase ResXResourceWriter, que crea un archivo .resx a partir de los recursos especificados.
Observe que un archivo .resx creado por la clase ResXResourceWriter no puede ser utilizado directamente por una aplicación .NET Framework. Antes de agregar este archivo a la aplicación, se debe ejecutar utilizando Resgen.exe para convertirlo en un archivo .resources. Para obtener más información sobre la implementación de estas clases en el código, vea los correspondientes temas de referencia.
Para que Resgen.exe pueda analizar la entrada, es fundamental que los archivos .txt y .resx sigan el formato correcto.
Los archivos de texto sólo pueden contener recursos de cadena. Los recursos de cadena son útiles si se está creando una aplicación que debe tener cadenas traducidas a varios idiomas. Por ejemplo, se pueden adaptar las cadenas de opciones de menú a la configuración regional utilizando el recurso de cadena apropiado. Resgen.exe lee archivos de texto que contienen pares de nombre y valor, donde el nombre es una cadena que describe el recurso y el valor es la propia cadena del recurso. Se debe especificar cada par de nombre y valor en una línea independiente, como se indica a continuación:
name=value
Tenga en cuenta que se pueden utilizar cadenas vacías en los archivos de texto. Por ejemplo:
EmptyString=
Resgen.exe comprueba el archivo de texto para saber si hay nombres de recursos duplicados. Si el archivo de texto contiene nombres de recursos duplicados, Resgen.exe emitirá una advertencia y omitirá los nombres duplicados. Para obtener más detalles sobre el formato de los archivos de texto, vea Recursos en formato de archivos de texto.
El formato de archivos de recursos .resx consiste en entradas XML. Al igual que en los archivos .txt, se pueden especificar recursos de cadena en estas entradas XML. Una ventaja importante de los archivos .resx sobre los archivos .txt es que también permiten especificar o incrustar objetos. Cuando se ve un archivo .resx, se puede observar realmente la forma binaria de un objeto incrustado (por ejemplo, una imagen) cuando esta información binaria forma parte del manifiesto del recurso. Al igual que con los archivos .txt, se puede abrir un archivo .resx con un editor de texto (como el Bloc de notas o Microsoft Word) y escribir, analizar y manipular el contenido. Observe que para realizar estas acciones, se requiere un conocimiento excelente de las etiquetas XML y de la estructura de archivos .resx. Para obtener más detalles sobre el formato de archivos .resx, vea Recursos en formato de archivo .Resx.
Para crear un archivo .resources que tenga incrustados objetos que no son de cadena, se debe utilizar Resgen.exe para convertir un archivo .resx con objetos, o bien agregar los recursos de objetos al archivo directamente desde el código, utilizando los métodos que proporciona la clase ResourceWriter. Si se utiliza Resgen.exe para convertir un archivo .resources que contiene objetos en un archivo .txt, todos los recursos de cadena se convertirán correctamente, pero los tipos de datos de los objetos que no son de cadena también se escribirán en el archivo como cadenas. Se perderán los objetos incrustados en la conversión y Resgen.exe notificará el error al recuperar los recursos.
La versión 2.0 de .NET Framework admite el uso de recursos con establecimiento inflexible de tipos. La compatibilidad con los recursos con establecimiento inflexible de tipos encapsula el acceso a los recursos creando clases que contienen un conjunto de propiedades de sólo lectura (get) estáticas, ofreciendo de esta manera otra forma de utilizar recursos, en lugar de utilizar los métodos de la clase ResourceManager directamente. La funcionalidad básica la ofrece la opción de línea de comandos /str de Resgen.exe, que incluye la funcionalidad de la clase StronglyTypedResourceBuilder. Cuando se especifica la opción /str, el resultado de Resgen.exe es una clase que contiene propiedades con establecimiento inflexible de tipos que coincide con los recursos a los que se hace referencia en el parámetro de entrada. Esta clase proporciona acceso de sólo lectura con establecimiento inflexible de tipos a los recursos que están disponibles en el archivo que se procesa.
La herramienta Generador de archivos de recursos (Resgen.exe) le permite crear archivos de .resources, así como contenedores con establecimiento inflexible de tipos para tener acceso a dichos archivos .resources. Al crear un contendor con establecimiento inflexible de tipos, el nombre del archivo de .resources debe coincidir con el nombre del espacio de nombres y el de clase (por ejemplo, MyNamespace.MyClass.resources) del código generado. Sin embargo, la herramienta Generador de archivos de recursos (Resgen.exe) le permite especificar opciones que generan un archivo de .resources con un nombre no compatible. Para resolver este problema, cambie el nombre de los archivos de resultados con nombres no compatibles después de que la herramienta Generador de archivos de recursos (Resgen.exe) los genere.
Una vez terminada la creación de archivos .resources con Resgen.exe, se debe utilizar la herramienta Assembly Linker (Al.exe) para incrustar los recursos en un archivo ejecutable binario en tiempo de ejecución o compilarlos en ensamblados satélite.
Nota
Si en Resgen.exe se produce un error por cualquier motivo, el valor devuelto será –1.
Nota
Resgen.exe no acepta un nombre de archivo .resx que contiene espacios al generar una clase de recursos con establecimiento inflexible de tipos. Reemplaza todos los caracteres no válidos por un subrayado ("_"). Para obtener más información, vea VerifyResourceName.
Ejemplos
El comando siguiente, que no tiene opciones especificadas, muestra la sintaxis de comandos y opciones para Resgen.exe.
resgen
El comando siguiente lee los pares de nombre y valor de myResources.txt
y escribe un archivo de recursos binario denominado myResources.resources.
Debido a que el nombre del archivo de salida no se especifica de forma explícita, adoptará de forma predeterminada el mismo nombre que el archivo de entrada.
resgen myResources.txt
El comando siguiente lee los pares de nombre y valor de myResources.txt
y escribe un archivo de recursos binario denominado yourResources.resources
.
resgen myResources.txt yourResources.resources
El comando siguiente lee un archivo de entrada basado en XML denominado myResources.resx
y crea un archivo de recursos binario denominado myResources.resources
.
resgen myResources.resx myResources.resources
El comando siguiente lee un archivo de recursos binario denominado myResources.resources
y crea un archivo de resultados basado en XML denominado myResources.resx
.
resgen myResources.resources myResources.resx
El comando siguiente lee un archivo de entrada basado en XML denominado myResources.resx
y crea un archivo .txt denominado myResources.txt
. Observe que si el archivo .resx contiene objetos incrustados, no se convertirán de forma exacta en el archivo .txt.
resgen myResources.resx myResources.txt
El comando siguiente lee un archivo de entrada basado en XML denominado myResources.resx
y crea un archivo de recursos binario denominado myResources.resources
. También genera un archivo de Visual Basic denominado MyFile.vb
con una clase denominada MyClass
que contiene propiedades con establecimiento inflexible de tipos que coinciden con los recursos a los que se hace referencia en el archivo de entrada. La clase MyClass
está incluida dentro de un espacio de nombres denominado Namespace1
.
resgen myResources.resx myResources.resources /str:C#,Namespace1,MyClass,MyFile.cs
Vea también
Referencia
Herramientas de .NET Framework
Herramienta Assembly Linker (Al.exe)
Símbolo del sistema de SDK
System.Resources.Tools