GenerateResource (tarea)

Convierte entre archivos .txt y .resx (formato de recursos basado en XML) y archivos .resources binarios de Common Language Runtime, que se pueden insertar en un archivo ejecutable binario en tiempo de ejecución o compilar en ensamblados satélite. Esta tarea normalmente se usa para convertir archivos .txt o .resx en archivos .resources. La tarea GenerateResource es funcionalmente similar a resgen.exe.

Parámetros

En la siguiente tabla se describen los parámetros de la tarea GenerateResource .

Parámetro Descripción
AdditionalInputs Parámetro ITaskItem[] opcional.

Contiene entradas adicionales a la comprobación de dependencias realizada por esta tarea. Por ejemplo, los archivos de proyecto y de destino normalmente deben ser entradas de modo que, si se actualizan, se vuelvan a generar todos los recursos.
EnvironmentVariables Parámetro String[] opcional.

Especifica una matriz de pares nombre-valor de variables de entorno que deben pasarse al ejecutable resgen.exe generado, además del bloque de entorno normal (o su invalidación selectiva).
ExcludedInputPaths Parámetro ITaskItem[] opcional.

Especifica una matriz de elementos que determinan rutas de acceso en las que las entradas de las que se lleva a cabo el seguimiento se van a ignorar durante la comprobación de actualización.
ExecuteAsTool Parámetro Boolean opcional.

Si es true, se ejecutan tlbimp.exe y aximp.exe desde la plataforma de destino adecuada fuera de proceso para generar los ensamblados de contenedor necesarios. Este parámetro permite compatibilidad con múltiples versiones de ResolveComReferences.
FilesWritten Parámetro de salida ITaskItem[] opcional.

Contiene los nombres de todos los archivos escritos en el disco. Esto incluye el archivo de la caché, si existe. Este parámetro es útil para las implementaciones de Clean.
MinimalRebuildFromTracking Parámetro Boolean opcional.

Obtiene o establece un modificador que especifica si se va a usar la compilación incremental de la que se realiza el seguimiento. Si es true, se activa la compilación incremental; de lo contrario, se forzará una recompilación.
NeverLockTypeAssemblies Parámetro Boolean opcional.

Obtiene o establece un valor booleano que especifica si se va a crear una nueva clase AppDomain para evaluar los archivos de recursos ( .resx) (true) o crear una nueva clase AppDomain solo cuando los archivos de recursos hagan referencia al ensamblado de un usuario (false).
OutputResources Parámetro de salida ITaskItem[] opcional.

Especifica el nombre de los archivos generados, como los archivos .resources. Si no especifica un nombre, se usa el nombre del archivo de entrada coincidente y el archivo .resources que se crea se coloca en el directorio que contiene el archivo de entrada.
PublicClass Parámetro Boolean opcional.

Si es true, crea una clase de recurso fuertemente tipado como clase pública.
References Parámetro String[] opcional.

Hace referencia a tipos de carga en archivos .resx. Los elementos de datos del archivo .resx pueden tener un tipo .NET. Cuando se lee el archivo .resx, debe resolverse este tipo. Normalmente, se resuelve correctamente utilizando reglas de carga de tipo estándar. Si proporciona los ensamblados en References, serán prioritarios.

Este parámetro no se requiere para los recursos fuertemente tipados.
SdkToolsPath Parámetro String opcional.

Especifica la ruta de acceso a las herramientas del SDK, como resgen.exe.
Sources Parámetro ITaskItem[] requerido.

Especifica los elementos que se van a convertir. Los elementos pasados a este parámetro deben tener una de las extensiones de archivo siguientes:

- .txt: especifica la extensión para convertir un archivo de texto. Los archivos de texto solo pueden contener recursos de cadena.
- .resx: especifica la extensión de un archivo de recursos basado en XML que se va a convertir.
- .restext: especifica el mismo formato que .txt. Esta extensión diferente es útil si desea distinguir claramente los archivos de origen que contienen recursos de otros archivos de origen en su proceso de compilación.
- .resources: especifica la extensión de un archivo de recursos que se va a convertir.
StateFile Parámetro ITaskItem opcional.

Especifica la ruta de acceso a un archivo de la caché opcional que se usa para acelerar la comprobación de dependencias de vínculos en archivos de entrada .resx.
StronglyTypedClassName Parámetro String opcional.

Especifica el nombre de clase para la clase de recurso fuertemente tipado. Si no se especifica este parámetro, se utiliza el nombre base del archivo de recursos.
StronglyTypedFilename Parámetro ITaskItem opcional.

Especifica el nombre de archivo para el archivo de origen. Si no se especifica este parámetro, el nombre de la clase se utiliza como nombre de archivo base, y la extensión depende del lenguaje. Por ejemplo: MyClass.cs.
StronglyTypedLanguage Parámetro String opcional.

Especifica el lenguaje que se utilizará al generar el origen de la clase del recurso fuertemente tipado. Este parámetro debe coincidir exactamente con uno de los lenguajes utilizado por CodeDomProvider. Por ejemplo: VB o C#.

Cuando se pasa un valor a este parámetro, se indica a la tarea que genere recursos fuertemente tipados.
StronglyTypedManifestPrefix Parámetro String opcional.

Especifica el espacio de nombres del recurso o prefijo del manifiesto que se va a usar en el origen de clase generado para el recurso fuertemente tipado.
StronglyTypedNamespace Parámetro String opcional.

Especifica el espacio de nombres que se va a usar para el origen de clase generado del recurso fuertemente tipado. Si no se especifica este parámetro, cualquier recurso fuertemente tipado se encontrará en el espacio de nombres global.
TLogReadFiles Parámetro de solo lectura ITaskItem[] opcional.

Obtiene una matriz de elementos que representan los registros de seguimiento de lectura.
TLogWriteFiles Parámetro de solo lectura ITaskItem[] opcional.

Obtiene una matriz de elementos que representan los registros de seguimiento de escritura.
ToolArchitecture Parámetro System.String opcional.

Se utiliza para determinar si debe utilizarse o no Tracker.exe para generar ResGen.exe.

Debe ser analizable para un miembro de la enumeración ExecutableType. Si es String.Empty, utiliza una heurística para determinar una arquitectura predeterminada. Debe ser analizable para un miembro de la enumeración Microsoft.Build.Utilities.ExecutableType.
TrackerFrameworkPath Parámetro String opcional.

Especifica la ruta de acceso a la ubicación de .NET Framework adecuada que contiene FileTracker.dll.

Si está establecido, el usuario asume la responsabilidad de comprobar que el valor de bits de FileTracker.dll que pasa coincide con el valor de bits del archivo ResGen.exe que va a emplear. Si no está establecido, la tarea decide la ubicación adecuada basándose en la versión actual de .NET Framework.
TrackerLogDirectory Parámetro String opcional.

Especifica el directorio intermedio en el que se van a colocar los registros de seguimiento de la ejecución de esta tarea.
TrackerSdkPath Parámetro String opcional.

Especifica la ruta de acceso a la ubicación de Windows SDK adecuada que contiene Tracker.exe.

Si está establecido, el usuario asume la responsabilidad de comprobar que el valor de bits de Tracker.exe que pasa coincide con el valor de bits del archivo ResGen.exe que va a emplear. Si no está establecido, la tarea decide la ubicación adecuada basándose en el SDK de Windows actual.
TrackFileAccess Parámetro Boolean opcional.

Si es true, el directorio del archivo de entrada se utiliza para resolver rutas de acceso de archivo relativas.
UsePreserializedResources Parámetro Boolean opcional.

Si es true, especifica que los recursos que no son de cadena se van a serializar mediante PreserializedResourceWriter en lugar de ResourceWriter, que no se admite en .NET Core o .NET 5 o versiones posteriores.
UseSourcePath Parámetro Boolean opcional.

Si es true, especifica que el directorio del archivo de entrada se utiliza para resolver las rutas de acceso de archivo relativas.

Observaciones

Debido a que los archivos .resx pueden contener vínculos a otros archivos de recursos, no basta con simplemente comparar las marcas de tiempo de los archivos .resx y .resources para ver si las salidas están actualizadas. En su lugar, la tarea GenerateResource sigue los vínculos de los archivos .resx y comprueba también las marcas de tiempo de los archivos vinculados. Esto significa que, por lo general, no debe utilizar los atributos Inputs y Outputs en el destino que contiene la tarea GenerateResource, puesto que podría causar que se omitiera cuando tendría que ejecutarse.

Además de los parámetros mencionados anteriormente, esta tarea hereda los parámetros de la clase TaskExtension, que a su vez hereda de la clase Task. Para obtener una lista de estos parámetros adicionales y sus descripciones, consulte TaskExtension base class.

Cuando se utiliza MSBuild 4.0 para proyectos de .NET 3.5, la compilación puede dar error en los recursos x86. Para evitar este problema, puede compilar el destino como un ensamblado AnyCPU.

El parámetro UsePreserializedResources obtiene su valor de la propiedad $(GenerateResourceUsePreserializedResources) en el proceso de compilación normal de .NET. Esta propiedad se establece en true de forma predeterminada en proyectos de .NET Core y proyectos que usan .NET 5 o versiones posteriores. Puede establecer $(GenerateResourceUsePreserializedResources) en true para permitir que el SDK de .NET compile proyectos destinados a .NET Framework 4.6.1 o posterior que usan recursos que no son de cadena. El ensamblado System.Resources.Extensions debe estar disponible en tiempo de ejecución. Está disponible en .NET Core 3.0 y versiones posteriores y en .NET 5 y versiones posteriores; además, se puede usar en .NET Framework 4.6.1 o posterior a través de PackageReference.|

Ejemplo

En el ejemplo siguiente se usa la tarea GenerateResource para generar archivos .resources a partir de los archivos especificados por la colección de elementos Resx.

<GenerateResource
    Sources="@(Resx)"
    OutputResources="@(Resx->'$(IntermediateOutputPath)%(Identity).resources')">
    <Output
        TaskParameter="OutputResources"
        ItemName="Resources"/>
</GenerateResource>

La tarea GenerateResource usa los metadatos <LogicalName> de un elemento <EmbeddedResource> para asignar un nombre al recurso insertado en un ensamblado.

Si se da por hecho que el ensamblado se denomina myAssembly, el código siguiente genera un recurso insertado denominado someQualifier.someResource.resources:

<ItemGroup>
    <EmbeddedResource Include="myResource.resx">
        <LogicalName>someQualifier.someResource.resources</LogicalName>
    </EmbeddedResource>
</ItemGroup>

Sin los metadatos de <LogicalName>, el recurso se denominaría myAssembly.myResource.resources. Este ejemplo solo se aplica al proceso de compilación de Visual Basic y Visual C#.

Vea también