Partilhar via


Tarefa GenerateResource

Converte entre arquivos .txt e .resx (formato de recurso baseado em XML) e arquivos de .resources binários de Common Language Runtime que podem ser incorporados em um executável binário de tempo de execução ou compilados em assemblies satélite. Esta tarefa é normalmente usada para converter arquivos .txt ou .resx em arquivos .resources. A tarefa GenerateResource é funcionalmente semelhante a resgen.exe.

Atenção

Recursos em arquivos .resx podem ser serializados usando BinaryFormatter, que não é seguro. Inclua apenas os arquivos .resx em seu processo de compilação em que você confia.

Parâmetros

A tabela a seguir descreve os parâmetros da tarefa GenerateResource.

Parâmetro Descrição
AdditionalInputs Parâmetro ITaskItem[] opcional.

Contém entradas adicionais para a verificação de dependência feita por esta tarefa. Por exemplo, os arquivos de projeto e de destino normalmente devem ser entradas, de modo que, se forem atualizados, todos os recursos sejam regenerados.
EnvironmentVariables Parâmetro String[] opcional.

Especifica uma matriz de pares nome-valor de variáveis de ambiente que devem ser passadas para o resgen.exegerado , além de (ou substituindo seletivamente) o bloco de ambiente regular.
ExcludedInputPaths Parâmetro ITaskItem[] opcional.

Especifica uma matriz de itens que especificam caminhos dos quais as entradas controladas serão ignoradas durante a verificação atualizada.
ExecuteAsTool Parâmetro Boolean opcional.

Se true, executa tlbimp.exe e aximp.exe a partir da estrutura de destino apropriada fora do proc para gerar os assemblies wrapper necessários. Este parâmetro permite a segmentação múltipla de ResolveComReferences.
FilesWritten Parâmetro de saída ITaskItem[] opcional.

Contém os nomes de todos os arquivos gravados no disco, incluindo o arquivo de cache, se houver. Este parâmetro é útil para implementações de Clean.
MinimalRebuildFromTracking Parâmetro Boolean opcional.

Obtém ou define uma opção que especifica se a compilação incremental controlada será usada. Se true, a compilação incremental está ativada; caso contrário, uma reconstrução será forçada.
NeverLockTypeAssemblies Parâmetro Boolean opcional.

Obtém ou define um valor Boolean que especifica se deve criar um novo AppDomain para avaliar os recursos (.resx) arquivos (true) ou para criar um novo AppDomain somente quando os arquivos de recursos fazem referência ao assembly de um usuário (false).
OutputResources Parâmetro de saída ITaskItem[] opcional.

Especifica o nome dos arquivos gerados, como arquivos .resources. Se você não especificar um nome, o nome do arquivo de entrada correspondente será usado e o arquivo de .resources criado será colocado no diretório que contém o arquivo de entrada.
PublicClass Parâmetro Boolean opcional.

Se true, cria uma classe de recurso fortemente tipada como uma classe pública.
References Parâmetro String[] opcional.

Referências a tipos de carregamento em .resx arquivos. .resx elementos de dados de arquivo podem ter um tipo .NET. Quando o arquivo de .resx é lido, esse tipo deve ser resolvido. Normalmente, ele é resolvido com êxito usando regras de carregamento de tipo padrão. Se você fornecer assemblies em References, eles terão precedência.

Este parâmetro não é necessário para recursos fortemente tipados.
SdkToolsPath Parâmetro String opcional.

Especifica o caminho para as ferramentas SDK, como resgen.exe.
Sources Parâmetro de ITaskItem[] necessário.

Especifica os itens a serem convertidos. Os itens passados para esse parâmetro devem ter uma das seguintes extensões de arquivo:

- .txt: Especifica a extensão para um arquivo de texto a ser convertido. Os arquivos de texto só podem conter recursos de cadeia de caracteres.
- .resx: Especifica a extensão para um arquivo de recurso baseado em XML a ser convertido.
- .restext: Especifica o mesmo formato que .txt. Esta extensão diferente é útil se você quiser distinguir claramente os arquivos de origem que contêm recursos de outros arquivos de origem em seu processo de compilação.
- .resources: Especifica a extensão para um arquivo de recurso a ser convertido.
StateFile Parâmetro ITaskItem opcional.

Especifica o caminho para um arquivo de cache opcional que é usado para acelerar a verificação de dependência de links em .resx arquivos de entrada.
StronglyTypedClassName Parâmetro String opcional.

Especifica o nome da classe para a classe de recurso fortemente tipada. Se esse parâmetro não for especificado, o nome base do arquivo de recurso será usado.
StronglyTypedFilename Parâmetro ITaskItem opcional.

Especifica o nome do arquivo de origem. Se esse parâmetro não for especificado, o nome da classe será usado como o nome do arquivo base, com a extensão dependente do idioma. Por exemplo: MyClass.cs.
StronglyTypedLanguage Parâmetro String opcional.

Especifica o idioma a ser usado ao gerar a fonte de classe para o recurso fortemente tipado. Este parâmetro deve corresponder exatamente a um dos idiomas usados pelo CodeDomProvider. Por exemplo: VB ou C#.

Ao passar um valor para esse parâmetro, você instrui a tarefa a gerar recursos fortemente tipados.
StronglyTypedManifestPrefix Parâmetro String opcional.

Especifica o namespace do recurso ou o prefixo do manifesto a ser usado na fonte de classe gerada para o recurso fortemente tipado.
StronglyTypedNamespace Parâmetro String opcional.

Especifica o namespace a ser usado para a origem da classe gerada para o recurso fortemente tipado. Se esse parâmetro não for especificado, todos os recursos fortemente tipados estarão no namespace global.
TLogReadFiles Parâmetro opcional ITaskItem[] somente leitura.

Obtém uma matriz de itens que representam os logs de controle de leitura.
TLogWriteFiles Parâmetro opcional ITaskItem[] somente leitura.

Obtém uma matriz de itens que representam os logs de controle de gravação.
ToolArchitecture Parâmetro System.String opcional.

Usado para determinar se Tracker.exe precisa ou não ser usado para desovar ResGen.exe.

Deve ser analisado para um membro da enumeração ExecutableType. Se String.Empty, usa uma heurística para determinar uma arquitetura padrão. Deve ser analisado para um membro da enumeração Microsoft.Build.Utilities.ExecutableType.
TrackerFrameworkPath Parâmetro String opcional.

Especifica o caminho para o local apropriado do .NET Framework que contém FileTracker.dll.

Se definido, o usuário assume a responsabilidade de certificar-se de que o bitness do FileTracker.dll que eles passam corresponde ao bitness do ResGen.exe que ele pretende usar. Se não estiver definida, a tarefa decide o local apropriado com base na versão atual do .NET Framework.
TrackerLogDirectory Parâmetro String opcional.

Especifica o diretório intermediário no qual os logs de controle da execução dessa tarefa serão colocados.
TrackerSdkPath Parâmetro String opcional.

Especifica o caminho para o local apropriado do SDK do Windows que contém Tracker.exe.

Se definido, o usuário assume a responsabilidade de certificar-se de que o bitness do Tracker.exe que eles passam corresponde ao bitness do ResGen.exe que ele pretende usar. Se não estiver definida, a tarefa decide o local apropriado com base no SDK atual do Windows.
TrackFileAccess Parâmetro Boolean opcional.

Se verdadeiro, o diretório do arquivo de entrada é usado para resolver caminhos de arquivo relativos.
UsePreserializedResources Parâmetro Boolean opcional.

Se true, especifica que os recursos que não são String devem ser serializados usando PreserializedResourceWriter em vez de ResourceWriter, que não é suportado no .NET Core ou .NET 5 ou posterior.
UseSourcePath Parâmetro Boolean opcional.

Se true, especifica que o diretório do arquivo de entrada deve ser usado para resolver caminhos de arquivo relativos.

Comentários

Como .resx arquivos podem conter links para outros arquivos de recursos, não é suficiente simplesmente comparar .resx e .resources carimbos de data/hora do arquivo para ver se as saídas estão atualizadas. Em vez disso, a tarefa GenerateResource segue os links nos arquivos .resx e verifica também os carimbos de data/hora dos arquivos vinculados. Isso significa que você geralmente não deve usar atributos Inputs e Outputs no destino que contém a tarefa GenerateResource, pois isso pode fazer com que ela seja ignorada quando deveria realmente ser executada.

Além dos parâmetros listados acima, essa tarefa herda parâmetros da classe TaskExtension, que herda da classe Task. Para obter uma lista desses parâmetros adicionais e suas descrições, consulte classe base TaskExtension.

Ao usar o MSBuild 4.0 para direcionar projetos .NET 3.5, a compilação pode falhar em recursos x86. Para contornar esse problema, você pode criar o destino como um assembly AnyCPU.

O parâmetro UsePreserializedResources obtém seu valor da propriedade $(GenerateResourceUsePreserializedResources) no processo de compilação .NET normal. Essa propriedade é definida como true por padrão em projetos .NET Core e projetos que usam .NET 5 ou posterior. Você pode definir $(GenerateResourceUsePreserializedResources) como true para permitir que o SDK do .NET crie projetos destinados ao .NET Framework 4.6.1 ou posterior que usam recursos que não sejam de cadeia de caracteres. O assembly System.Resources.Extensions deve estar disponível em tempo de execução. Ele está disponível no .NET Core 3.0 e posterior e no .NET 5 e posterior, e pode ser usado no .NET Framework 4.6.1 ou posterior via PackageReference.|

Exemplo

O exemplo a seguir usa a tarefa GenerateResource para gerar arquivos de .resources a partir dos arquivos especificados pela coleção de itens Resx.

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

A tarefa GenerateResource usa os metadados <LogicalName> de um item de <EmbeddedResource> para nomear o recurso incorporado em um assembly.

Supondo que o assembly é chamado myAssembly, o código a seguir gera um recurso incorporado chamado someQualifier.someResource.resources:

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

Sem os metadados <LogicalName>, o recurso seria nomeado myAssembly.myResource.resources. Este exemplo se aplica somente ao processo de compilação do Visual Basic e Visual C#.

Ver também