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
- tareas de
- de referencia de tarea