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 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#.