Compartir vía


Tarea GenerateResource

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

Cautela

Los recursos de .resx archivos se pueden serializar mediante BinaryFormatter, que es no seguro. Incluya solo los archivos .resx en el proceso de compilación en el que confíe.

Parámetros

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

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

Contiene entradas adicionales para 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 vuelven a generar todos los recursos.
EnvironmentVariables Parámetro de String[] opcional.

Especifica una matriz de pares nombre-valor de variables de entorno que se deben pasar al resgen.exegenerado, además de (o invalidar de forma selectiva) el bloque de entorno normal.
ExcludedInputPaths Parámetro opcional ITaskItem[].

Especifica una matriz de elementos que especifican rutas de acceso desde las que se omitirán las entradas con seguimiento durante la comprobación actualizada.
ExecuteAsTool Parámetro de Boolean opcional.

Si true, ejecuta 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 la compatibilidad con múltiples versiones de ResolveComReferences.
FilesWritten Parámetro de salida opcional ITaskItem[].

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

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

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

Especifica el nombre de los archivos generados, como .resources archivos. 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 de Boolean opcional.

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

Referencias a tipos de carga en archivos de .resx desde. .resx los elementos de datos de archivo pueden tener un tipo .NET. Cuando se lee el archivo .resx, este tipo debe resolverse. Normalmente, se resuelve correctamente mediante reglas de carga de tipos estándar. Si proporciona ensamblados en References, tienen prioridad.

Este parámetro no es necesario para los recursos fuertemente tipados.
SdkToolsPath Parámetro de String opcional.

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

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

- .txt: especifica la extensión de un archivo de texto que se va a convertir. 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 código fuente que contienen recursos de otros archivos de código fuente en el proceso de compilación.
- .resources: especifica la extensión de un archivo de recursos que se va a convertir.
StateFile Parámetro de ITaskItem opcional.

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

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

Especifica el nombre de archivo del archivo de origen. Si no se especifica este parámetro, el nombre de la clase se usa como nombre de archivo base, con la extensión dependiente del idioma. Por ejemplo: MyClass.cs.
StronglyTypedLanguage Parámetro de String opcional.

Especifica el lenguaje que se va a usar al generar el origen de clase para el recurso fuertemente tipado. Este parámetro debe coincidir exactamente con uno de los idiomas usados por CodeDomProvider. Por ejemplo: VB o C#.

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

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

Especifica el espacio de nombres que se va a usar para el origen de clase generado para el recurso fuertemente tipado. Si no se especifica este parámetro, los recursos fuertemente tipados se encuentran en el espacio de nombres global.
TLogReadFiles Opcional ITaskItem[] parámetro de solo lectura.

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

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

Se usa para determinar si es necesario usar o no Tracker.exe para generar ResGen.exe.

Debe poder analizarse en un miembro de la enumeración ExecutableType. Si String.Empty, usa una heurística para determinar una arquitectura predeterminada. Debe poder analizarse en un miembro de la enumeración Microsoft.Build.Utilities.ExecutableType.
TrackerFrameworkPath Parámetro de String opcional.

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

Si se establece, el usuario asume la responsabilidad de asegurarse de que el valor de bits de la FileTracker.dll que pasa coincide con el valor de bits de la ResGen.exe que piensa usar. Si no se establece, la tarea decide la ubicación adecuada en función de la versión actual de .NET Framework.
TrackerLogDirectory Parámetro de String opcional.

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

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

Si se establece, el usuario asume la responsabilidad de asegurarse de que el valor de bits de la Tracker.exe que pasa coincide con el valor de bits de la ResGen.exe que piensa usar. Si no se establece, la tarea decide la ubicación adecuada en función del SDK de Windows actual.
TrackFileAccess Parámetro de Boolean opcional.

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

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

Si true, especifica que el directorio del archivo de entrada se usará para resolver rutas de acceso de archivo relativas.

Observaciones

Dado que .resx archivos pueden contener vínculos a otros archivos de recursos, no es suficiente comparar .resx y .resources marcas de tiempo de archivo 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 usar Inputs y Outputs atributos en el destino que contiene la tarea GenerateResource, ya que esto puede hacer que se omita cuando realmente se ejecute.

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

Al usar MSBuild 4.0 para tener como destino proyectos de .NET 3.5, la compilación puede producir un error en los recursos x86. Para solucionar 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 y proyectos de .NET Core que usan .NET 5 o posterior. Puede establecer $(GenerateResourceUsePreserializedResources) en true para permitir que el SDK de .NET compile proyectos destinados a .NET Framework 4.6.1 o versiones posteriores que usen recursos que no sean 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 .NET 5 y versiones posteriores, y 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 .resources archivos a partir de los archivos especificados por la colección de elementos de 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 de <EmbeddedResource> para asignar un nombre al recurso incrustado en un ensamblado.

Suponiendo que el ensamblado se denomina myAssembly, el código siguiente genera un recurso incrustado denominado someQualifier.someResource.resources:

<ItemGroup>
    <EmbeddedResource Include="myResource.resx">
        <LogicalName>someQualifier.someResource.resources</LogicalName>
        <WithCulture>false</WithCulture>
    </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#.

Consulte también