Share via


Resgen.exe (Generador de archivos de recursos)

Esta herramienta convierte archivos de texto (.txt o .restext) y archivos con formato de recursos basado en XML (.resx) en archivos binarios de Common Language Runtime (.resources), que se pueden incrustar en un archivo ejecutable binario 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 o restext en archivos .resources o .resx.

    NotaNota

    La extensión .restext se introdujo en la versión 2.0 de .NET Framework.El formato de los archivos .restext es idéntico al formato de los archivos .txt.Sin embargo, la extensión .restext ayuda a identificar más fácilmente los archivos de texto que contienen definiciones de recursos.

  • Convierte archivos .resources en archivos de texto o .resx.

  • Convierte archivos .resx en archivos de texto o .resources.

Esta herramienta se instala automáticamente con Visual Studio y con el SDK de Windows. Para ejecutar la herramienta, se recomienda usar el símbolo del sistema de Visual Studio o del SDK de Windows (shell de CMD). Estas utilidades permiten ejecutar la herramienta fácilmente, sin navegar a la carpeta de instalación. Para obtener más información, vea Símbolos del sistema del SDK de Windows y Visual Studio.

  • Si tiene instalado Visual Studio en el equipo: en la barra de tareas, haga clic en Start, All Programs, Visual Studio y Visual Studio Tools y, a continuación, haga clic en Visual Studio Command Prompt.

    O bien

    Si tiene el SDK de Windows instalado en el equipo: en la barra de tareas, haga clic en Start, All Programs, haga clic en la carpeta del SDK de Windows y, a continuación, haga clic en Command Prompt (o CMD Shell).

  • En el símbolo del sistema, escriba:

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. extension debe ser uno de los valores siguientes:

.txt o .restext

Especifica la extensión de un archivo de texto que se convierte en un archivo .resources o en un archivo .resx. Los archivos de texto sólo pueden contener recursos de cadena.

.resx

Especifica la extensión de un archivo de recursos basado en XML que se convierte en un archivo .resources o en un archivo de texto (.txt o .restext).

.resources

Especifica la extensión de un archivo de recursos que se convierte en un archivo .resx o en un archivo de texto (.txt o restext).

outputFilename.extension

Nombre del archivo de recursos que se crea.

Este argumento es opcional cuando se realiza la conversión desde un archivo .txt, .restext 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 outputFilename, Resgen.exe anexa una extensión .resources al argumento filenamede entrada y escribe el archivo en el directorio que contiene 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. Especifique la extensión .txt o .restext al convertir un archivo .resources en un archivo de texto. 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 varios archivos .resx o de texto para convertirlos en varios archivos .resources en una única operación masiva. Si no especifica esta opción, sólo podrá especificar un argumento de archivo de entrada.

Esta opción no se puede combinar con la opción /str:.

/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 (cs o C# para C#, vb o visualbasic para 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.

NotaNota
En .NET Framework 2.0, classname y filename se omiten si no se especifica namespace.

Sólo se permite un archivo de entrada cuando se utiliza la opción /str:, por lo que no se puede utilizar con la opción /compile.

Si se especifica namespace pero no classname, el nombre de clase se deriva del nombre del archivo de salida (por ejemplo, los caracteres de subrayado se sustituyen por puntos). En consecuencia, es posible que los recursos con establecimiento inflexible de tipos no funcionen. Para evitarlo, especifique tanto el nombre de clase como el nombre del archivo de salida.

/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:

Tenga en cuenta que una aplicación de .NET Framework no puede utilizar directamente un archivo .resx creado por la clase ResXResourceWriter. 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 de texto y .resx sigan el formato correcto.

Los archivos de texto (.txt o .restext) 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=

Un archivo de texto se debe guardar con codificación UTF-8 o Unicode, a menos que sólo contenga caracteres del alfabeto latino normal, sin marcas diacríticas como cedillas, diéresis y tildes. Por ejemplo, Resgen.exe quita los caracteres ANSI extendidos cuando procesa un archivo de texto que no tiene codificación UTF-8 o Unicode.

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. Puede especificar recursos de cadena en estas entradas de XML, tal y como haría en los archivos de texto. Una ventaja importante de los archivos .resx sobre los archivos de texto 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 de texto, 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 de texto, 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 Resgen.exe (Generador de archivos de recursos) le permite crear archivos de .resources, así como contenedores con establecimiento inflexible de tipos para tener acceso a dichos archivos .resources. Al crear un contenedor 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 Resgen.exe (Generador de archivos de recursos) 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 salida con nombres no compatibles después de que la herramienta Resgen.exe (Generador de archivos de recursos) 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.

NotaNota

Si en Resgen.exe se produce un error por cualquier razón, el valor devuelto será –1.

NotaNota

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.restext y escribe un archivo de recursos binario denominado yourResources.resources.

resgen myResources.restext 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 salida basado en XML denominado myResources.resx.

resgen myResources.resources myResources.resx

Los comandos siguientes leen un archivo de entrada basado en XML denominado myResources.resx y escriben en archivos de texto denominados myResources.txt y myResources.restext, respectivamente. Observe que si el archivo .resx contiene objetos incrustados, no se convertirán de forma exacta en el archivo de texto.

resgen myResources.resx myResources.txt
resgen myResources.resx myResources.restext

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

System.Resources.Tools

Al.exe (Assembly Linker)

Símbolos del sistema del SDK de Windows y Visual Studio

Conceptos

Recursos en aplicaciones

Otros recursos

Herramientas de .NET Framework

Codificación y localización

Historial de cambios

Fecha

Historial

Motivo

1 de abril de 2011

Se agregó información sobre el uso de los símbolos del sistema de Visual Studio y del SDK de Windows.

Mejora de la información.