Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O Gerador de Arquivos de Recurso (Resgen.exe) converte arquivos de texto (.txt ou .restext) e arquivos de formato de recurso baseado em XML (.resx) em arquivos binários de common language runtime (.resources) que podem ser inseridos em um assembly de satélite ou executável binário de runtime. Para obter mais informações, consulte Criar arquivos de recurso.
Resgen.exe é um utilitário de conversão de recursos de uso geral que executa as seguintes tarefas:
Converte arquivos .txt ou .restext em arquivos .resources ou .resx. (O formato de arquivos .restext é idêntico ao formato de arquivos .txt. No entanto, a extensão .restext ajuda você a identificar arquivos de texto que contêm definições de recurso com mais facilidade.)
Converte arquivos .resources em arquivos .resx ou texto.
Converte arquivos .resx em arquivos de texto ou .resources.
Extrai os recursos de cadeia de caracteres de um assembly em um arquivo .resw adequado para uso em um aplicativo da Windows 8.x Store.
Cria uma classe fortemente tipada que fornece acesso a recursos nomeados individuais e à ResourceManager instância.
Se Resgen.exe falhar por qualquer motivo, o valor retornado será -1.
Para obter ajuda com Resgen.exe, você pode usar o seguinte comando, sem opções especificadas, para exibir a sintaxe de comando e as opções para Resgen.exe:
resgen
Você também pode usar a opção /? :
resgen /?
Se você usar Resgen.exe para gerar arquivos .resources binários, poderá usar um compilador de linguagem para inserir os arquivos binários em assemblies executáveis ou usar o Vinculador de Assembly (Al.exe) para compilá-los em assemblies satélite.
Essa ferramenta é instalada automaticamente com o Visual Studio. Para executar a ferramenta, use o Prompt de Comando do Desenvolvedor do Visual Studio ou o PowerShell do Desenvolvedor do Visual Studio.
No prompt de comando, digite o seguinte:
Sintaxe
resgen [-define:symbol1[,symbol2,...]] [/useSourcePath] filename.extension | /compile filename.extension... [outputFilename.extension] [/r:assembly] [/str:lang[,namespace[,class[,file]]] [/publicclass]]
resgen filename.extension [outputDirectory]
Parâmetros
| Parâmetro ou opção | Description |
|---|---|
/define:
symbol1[, symbol2,...] |
A partir do .NET Framework 4.5, dá suporte à compilação condicional em arquivos de recurso baseados em texto (.txt ou .restext). Se o símbolo corresponder a um símbolo incluído no arquivo de texto de entrada dentro de um #ifdef constructo, o recurso de cadeia de caracteres associado será incluído no arquivo .resources. Se o arquivo de texto de entrada incluir uma instrução #if ! com um símbolo que não é definido pela opção /define , o recurso de cadeia de caracteres associado será incluído no arquivo de recursos./define será ignorado se for usado com arquivos que não são de texto. Os símbolos diferenciam maiúsculas de minúsculas.Para obter mais informações sobre essa opção, consulte Compilação condicional de recursos mais adiante neste tópico. |
useSourcePath |
Especifica que o diretório atual do arquivo de entrada deve ser usado para resolver caminhos de arquivo relativos. |
/compile |
Permite que você especifique vários arquivos .resx ou de texto para converter em vários arquivos .resources em uma única operação em massa. Se você não especificar essa opção, poderá especificar apenas um argumento de arquivo de entrada. Os arquivos de saída são nomeados filename.resources. Essa opção não pode ser usada com a opção /str: .Para obter mais informações sobre essa opção, consulte Compilando ou convertendo vários arquivos mais adiante neste tópico. |
/r:
assembly
|
Faz referência a metadados do assembly especificado. Ele é usado ao converter arquivos .resx e permite que Resgen.exe serialize ou desserialize recursos de objeto. É semelhante às opções ou /r: às /reference: opções dos compiladores C# e Visual Basic. |
filename.extension |
Especifica o nome do arquivo de entrada a ser convertido. Se você estiver usando a primeira sintaxe de linha de comando mais longa apresentada antes desta tabela, extension deverá ser uma das seguintes:.txt ou .restext Um arquivo de texto a ser convertido em um arquivo .resources ou .resx. Os arquivos de texto podem conter apenas recursos de cadeia de caracteres. Para obter informações sobre o formato de arquivo, consulte a seção "Recursos em Arquivos de Texto" de Criar arquivos de recurso. .resx Um arquivo de recurso baseado em XML a ser convertido em um arquivo .resources ou um texto (.txt ou .restext). .Recursos Um arquivo de recurso binário a ser convertido em um arquivo .resx ou um texto (.txt ou .restext). Se você estiver usando a segunda sintaxe de linha de comando mais curta apresentada antes desta tabela, extension deverá ser a seguinte:.exe ou .dll Um assembly do .NET Framework (executável ou biblioteca) cujos recursos de cadeia de caracteres devem ser extraídos para um arquivo .resw para uso no desenvolvimento de aplicativos da Windows 8.x Store. |
outputFilename.extension |
Especifica o nome e o tipo do arquivo de recurso a ser criado. Esse argumento é opcional ao converter de um arquivo .restext, .restext ou .restext ou .txtem um arquivo .resources. Se você não especificar outputFilename, Resgen.exe acrescentará uma extensão .resources à entrada filename e gravará o arquivo no diretório que contém filename,extension.O outputFilename.extension argumento é obrigatório ao converter de um arquivo .resources. Especifique um nome de arquivo com a extensão .resx ao converter um arquivo .resources em um arquivo de recurso baseado em XML. Especifique um nome de arquivo com a extensão .txt ou .restext ao converter um arquivo .resources em um arquivo de texto. Você deve converter um arquivo .resources em um arquivo .txt somente quando o arquivo .resources contiver apenas valores de cadeia de caracteres. |
outputDirectory |
Para aplicativos da Windows 8.x Store, especifica o diretório no qual um arquivo .resw que contém os recursos filename.extension de cadeia de caracteres será gravado.
outputDirectory já deve existir. |
/str:
language[,namespace[,classname[,filename]]]
|
Cria um arquivo de classe de recurso fortemente tipado na linguagem de programação especificada na opção language .
language pode consistir em um dos literais a seguir:- Para C#: c#, csou csharp.- Para o Visual Basic: vb ou visualbasic.- Para VBScript: vbs ou vbscript.- Para C++: c++, mcou cpp.- Para JavaScript: js, jscriptou javascript.A namespace opção especifica o namespace padrão do projeto, a opção classname especifica o nome da classe gerada e a opção filename especifica o nome do arquivo de classe.A /str: opção permite apenas um arquivo de entrada, portanto, ele não pode ser usado com a opção /compile .Se namespace for especificado, mas classname não for, o nome da classe será derivado do nome do arquivo de saída (por exemplo, sublinhados são substituídos por períodos). Os recursos fortemente tipados podem não funcionar corretamente como resultado. Para evitar isso, especifique o nome da classe e o nome do arquivo de saída.Para obter mais informações sobre essa opção, consulte Gerando uma classe de recurso fortemente tipada mais adiante neste tópico. |
/publicClass |
Cria uma classe de recurso fortemente tipada como uma classe pública. Por padrão, a classe de recurso está internal em C# e Friend no Visual Basic.Essa opção será ignorada se a opção /str: não for usada. |
tipos de arquivo de recurso e Resgen.exe
Para que Resgen.exe convertam com êxito recursos, os arquivos .resx e texto devem seguir o formato correto.
Arquivos text (.txt e .restext)
Os arquivos text (.txt ou .restext) podem conter apenas recursos de cadeia de caracteres. Os recursos de cadeia de caracteres serão úteis se você estiver escrevendo um aplicativo que deve ter cadeias de caracteres traduzidas em vários idiomas. Por exemplo, você pode regionalizar facilmente cadeias de caracteres de menu usando o recurso de cadeia de caracteres apropriado. Resgen.exe lê arquivos de texto que contêm pares nome/valor, em que o nome é uma cadeia de caracteres que descreve o recurso e o valor é a própria cadeia de caracteres de recurso.
Observação
Para obter informações sobre o formato de arquivos .restext e .txt, consulte a seção "Recursos em Arquivos de Texto" de Criar arquivos de recurso.
Um arquivo de texto que contém recursos deve ser salvo com codificação UTF-8 ou Unicode (UTF-16), a menos que contenha apenas caracteres no intervalo latino básico (para U+007F). Resgen.exe remove caracteres ANSI estendidos quando processa um arquivo de texto que é salvo usando a codificação ANSI.
Resgen.exe verifica o arquivo de texto em busca de nomes de recursos duplicados. Se o arquivo de texto contiver nomes de recursos duplicados, Resgen.exe emitirá um aviso e ignorará o segundo valor.
Arquivos .resx
O formato de arquivo de recurso .resx consiste em entradas XML. Você pode especificar recursos de cadeia de caracteres dentro dessas entradas XML, como faria em arquivos de texto. Uma vantagem primária dos arquivos .resx em relação aos arquivos de texto é que você também pode especificar ou inserir objetos. Ao exibir um arquivo .resx, você pode ver a forma binária de um objeto inserido (por exemplo, uma imagem) quando essas informações binárias fazem parte do manifesto do recurso. Assim como acontece com arquivos de texto, você pode abrir um arquivo .resx com um editor de texto (como o Bloco de Notas ou o Microsoft Word) e gravar, analisar e manipular seu conteúdo. Observe que isso requer um bom conhecimento das marcas XML e da estrutura de arquivos .resx. Para obter mais detalhes sobre o formato de arquivo .resx, consulte a seção "Recursos em arquivos .resx" de Criar arquivos de recurso.
Para criar um arquivo .resources que contenha objetos nãostring inseridos, você deve usar Resgen.exe para converter um arquivo .resx contendo objetos ou adicionar os recursos de objeto ao arquivo diretamente do código chamando os métodos fornecidos pela ResourceWriter classe.
Se o arquivo .resx ou .resources contiver objetos e você usar Resgen.exe para convertê-lo em um arquivo de texto, todos os recursos de cadeia de caracteres serão convertidos corretamente, mas os tipos de dados dos objetos nãostring também serão gravados no arquivo como cadeias de caracteres. Você perderá os objetos inseridos na conversão e Resgen.exe relatará que ocorreu um erro ao recuperar os recursos.
Convertendo entre tipos de arquivo de recursos
Quando você converte entre diferentes tipos de arquivo de recurso, Resgen.exe pode não ser capaz de executar a conversão ou pode perder informações sobre recursos específicos, dependendo dos tipos de arquivo de origem e de destino. A tabela a seguir especifica os tipos de conversões que são bem-sucedidas ao converter de um tipo de arquivo de recurso para outro.
| Converter de | Para o arquivo de texto | Para arquivo .resx | Para .resw arquivo | Para o arquivo .resources |
|---|---|---|---|---|
| Texto ( arquivo.txt ou .restext) | -- | Sem problemas | Sem suporte | Sem problemas |
| Arquivo .resx | A conversão falhará se o arquivo contiver recursos que não são de cadeia de caracteres (incluindo links de arquivo) | -- | Sem suporte* | Sem problemas |
| Arquivo .resources | A conversão falhará se o arquivo contiver recursos que não são de cadeia de caracteres (incluindo links de arquivo) | Sem problemas | Sem suporte | -- |
| assembly .exe ou .dll | Sem suporte | Sem suporte | Somente recursos de cadeia de caracteres (incluindo nomes de caminho) são reconhecidos como recursos | Sem suporte |
*Em aplicativos da Windows 8.x Store, você usa arquivos .resw para criar recursos. Apesar da diferença de extensão de arquivo, o formato de arquivo .resw é idêntico ao formato de arquivo .resx, exceto que os arquivos .resw podem conter apenas cadeias de caracteres e caminhos de arquivo. Você pode converter arquivos .resx que contêm apenas cadeias de caracteres e caminhos de arquivo em arquivos .resw simplesmente alterando a extensão de arquivo.
Executando tarefas de Resgen.exe específicas
Você pode usar Resgen.exe de diversas maneiras: compilar um arquivo de recurso baseado em texto ou baseado em XML em um arquivo binário, converter entre formatos de arquivo de recurso e gerar uma classe que encapsula ResourceManager a funcionalidade e fornece acesso aos recursos. Esta seção fornece informações detalhadas sobre cada tarefa:
Compilando recursos em um arquivo binário
O uso mais comum de Resgen.exe é compilar um arquivo de recurso baseado em texto (um arquivo .restext ou .txt) ou um arquivo de recurso baseado em XML (um arquivo .resx) em um arquivo .resources binário. Em seguida, o arquivo de saída pode ser inserido em um assembly principal por um compilador de idiomas ou em um assembly satélite pelo Assembly Linker (AL.exe).
A sintaxe para compilar um arquivo de recurso é:
resgen inputFilename [outputFilename]
onde estão os parâmetros:
inputFilename O nome do arquivo, incluindo a extensão, do arquivo de recurso a ser compilado. Resgen.exe compila apenas arquivos com extensões de .txt, .restext ou .resx.
outputFilename O nome do arquivo de saída. Se você omitir outputFilename, Resgen.exe criará um arquivo .resources com o nome do inputFilename arquivo raiz no mesmo diretório que inputFilename. Se outputFilename incluir um caminho de diretório, o diretório deverá existir.
Você fornece um namespace totalmente qualificado para o arquivo .resources especificando-o no nome do arquivo e separando-o do nome do arquivo raiz por um período. Por exemplo, se outputFilename for MyCompany.Libraries.Strings.resources, o namespace é MyCompany.Libraryes.
O comando a seguir lê os pares nome/valor em Resources.txt e grava um arquivo .resources binário chamado Resources.resources. Como o nome do arquivo de saída não é especificado explicitamente, ele recebe o mesmo nome que o arquivo de entrada por padrão.
resgen Resources.txt
O comando a seguir lê os pares nome/valor em Resources.restext e grava um arquivo de recursos binários chamado StringResources.resources.
resgen Resources.restext StringResources.resources
O comando a seguir lê um arquivo de entrada baseado em XML chamado Resources.resx e grava um arquivo .resources binário chamado Resources.resources.
resgen Resources.resx Resources.resources
Convertendo entre tipos de arquivo de recurso
Além de compilar arquivos de recurso baseados em texto ou XML em arquivos .resources binários, Resgen.exe pode converter qualquer tipo de arquivo com suporte em qualquer outro tipo de arquivo com suporte. Isso significa que ele pode executar as seguintes conversões:
.txt e arquivos .restext para arquivos .resx.
Arquivos .resx para arquivos .txt e .restext.
Arquivos .resources para arquivos .txt e .restext.
Arquivos .resources para arquivos .resx.
A sintaxe é a mesma mostrada na seção anterior.
Além disso, você pode usar Resgen.exe para converter recursos inseridos em um assembly do .NET Framework em um arquivo .resw para aplicativos da Windows 8.x Store.
O comando a seguir lê um arquivo de recursos binários Resources.resources e grava um arquivo de saída baseado em XML chamado Resources.resx.
resgen Resources.resources Resources.resx
O comando a seguir lê um arquivo de recursos baseados em texto chamado StringResources.txt e grava um arquivo de recursos baseado em XML chamado LibraryResources.resx. Além de conter recursos de cadeia de caracteres, o arquivo .resx também pode ser usado para armazenar recursos que não são de cadeia de caracteres.
resgen StringResources.txt LibraryResources.resx
Os dois comandos a seguir leem um arquivo de recursos baseado em XML chamado Resources.resx e gravam arquivos de texto chamados Resources.txt e Resources.restext. Observe que, se o arquivo .resx contiver objetos inseridos, eles não serão convertidos com precisão nos arquivos de texto.
resgen Resources.resx Resources.txt
resgen Resources.resx Resources.restext
Compilando ou convertendo vários arquivos
Você pode usar a opção /compile para converter uma lista de arquivos de recurso de um formato para outro em uma única operação. A sintaxe é:
resgen /compile filename.extension [filename.extension...]
O comando a seguir compila três arquivos, StringResources.txt, TableResources.resw e ImageResources.resw, em arquivos .resources separados chamados StringResources.resources, TableResources.resources e ImageResources.resources.
resgen /compile StringResources.txt TableResources.resx ImageResources.resx
Exportando recursos para um arquivo .resw
Se você estiver desenvolvendo um aplicativo da Windows 8.x Store, talvez queira usar recursos de um aplicativo da área de trabalho existente. No entanto, os dois tipos de aplicativos dão suporte a diferentes formatos de arquivo. Em aplicativos da área de trabalho, os recursos em texto (.txt ou arquivos .restext) ou .resx são compilados em arquivos .resources binários. Em aplicativos da Windows 8.x Store, os arquivos .resw são compilados em arquivos PRI (índice de recursos de pacote binário). Você pode usar Resgen.exe para preencher essa lacuna extraindo recursos de um executável ou de um assembly satélite e gravando-os em um ou mais arquivos .resw que podem ser usados ao desenvolver um aplicativo da Windows 8.x Store.
Importante
O Visual Studio manipula automaticamente todas as conversões necessárias para incorporar os recursos em uma biblioteca portátil em um aplicativo da Windows 8.x Store. Usar Resgen.exe diretamente para converter os recursos em um assembly em formato de arquivo .resw é de interesse apenas para desenvolvedores que desejam desenvolver um aplicativo da Windows 8.x Store fora do Visual Studio.
A sintaxe para gerar arquivos .resw de um assembly é:
resgen filename.extension [outputDirectory]
onde estão os parâmetros:
filename.extension O nome de um assembly do .NET Framework (um executável ou .DLL). Se o arquivo não contiver recursos, Resgen.exe não criará nenhum arquivo.
outputDirectory O diretório existente no qual gravar os arquivos .resw. Se outputDirectory for omitido, os arquivos .resw serão gravados no diretório atual. Resgen.exe cria um arquivo .resw para cada arquivo .resources no assembly. O nome do arquivo raiz do arquivo .resw é o mesmo que o nome raiz do arquivo .resources.
O comando a seguir cria um arquivo .resw no diretório Win8Resources para cada arquivo .resources inserido em MyApp.exe:
resgen MyApp.exe Win8Resources
Compilando recursos condicionalmente
A partir do .NET Framework 4.5, Resgen.exe dá suporte à compilação condicional de recursos de cadeia de caracteres em arquivos de texto (.txt e .restext). Isso permite que você use um único arquivo de recurso baseado em texto em várias configurações de build.
Em um arquivo .txt ou .restext, use o #ifdef...
#endif constructo para incluir um recurso no arquivo binário .resources se um símbolo for definido e você usar o #if !constructo ... #endif para incluir um recurso se um símbolo não estiver definido. Em tempo de compilação, você define símbolos usando a opção /define: seguida por uma lista delimitada por vírgulas de símbolos. A comparação diferencia maiúsculas de minúsculas. O caso de símbolos definidos por /define deve corresponder ao caso de símbolos nos arquivos de texto a serem compilados.
Por exemplo, o arquivo a seguir chamado UIResources.text inclui um recurso de cadeia de caracteres nomeado AppTitle que pode levar um dos três valores, dependendo se os símbolos nomeados PRODUCTIONou CONSULTRETAIL definidos.
#ifdef PRODUCTION
AppTitle=My Software Company Project Manager
#endif
#ifdef CONSULT
AppTitle=My Consulting Company Project Manager
#endif
#ifdef RETAIL
AppTitle=My Retail Store Project Manager
#endif
FileMenuName=File
Em seguida, o arquivo pode ser compilado em um arquivo .resources binário com o seguinte comando:
resgen /define:CONSULT UIResources.restext
Isso produz um arquivo .resources que contém dois recursos de cadeia de caracteres. O valor do AppTitle recurso é "Gerenciador de Projetos da Minha Empresa de Consultoria".
Gerando uma classe de recurso fortemente tipada
Resgen.exe dá suporte a recursos fortemente tipados, que encapsulam o acesso aos recursos criando classes que contêm um conjunto de propriedades estáticas somente leitura. Isso fornece uma alternativa para chamar os métodos da ResourceManager classe diretamente para recuperar recursos. Você pode habilitar o suporte a recursos fortemente tipado usando a opção /str em Resgen.exe, que encapsula a funcionalidade da StronglyTypedResourceBuilder classe. Quando você especifica a opção /str , a saída de Resgen.exe é uma classe que contém propriedades fortemente tipadas que correspondem aos recursos referenciados no parâmetro de entrada. Essa classe fornece acesso somente leitura fortemente tipado aos recursos que estão disponíveis no arquivo processado.
A sintaxe para criar um recurso fortemente tipado é:
resgen inputFilename [outputFilename] /str:language[,namespace,[classname[,filename]]] [/publicClass]
Os parâmetros e as opções são:
inputFilename O nome do arquivo, incluindo a extensão, do arquivo de recurso para o qual gerar uma classe de recurso fortemente tipada. O arquivo pode ser um arquivo .resources baseado em texto, baseado em XML ou binário; ele pode ter uma extensão de .txt, .restext, .resw ou .resources.
outputFilename O nome do arquivo de saída. Se outputFilename incluir um caminho de diretório, o diretório deverá existir. Se você omitir outputFilename, Resgen.exe criará um arquivo .resources com o nome do inputFilename arquivo raiz no mesmo diretório que inputFilename.
outputFilename pode ser um arquivo .resources baseado em texto, baseado em XML ou binário. Se a extensão de outputFilename arquivo for diferente da extensão de arquivo de inputFilename, Resgen.exe executará a conversão de arquivo.
Se inputFilename for um arquivo .resources, Resgen.exe copiará o arquivo .resources se outputFilename também for um arquivo .resources. Se outputFilename for omitido, Resgen.exe substituirá inputFilename por um arquivo .resources idêntico.
Idioma O idioma no qual gerar código-fonte para a classe de recurso fortemente tipada. Os valores possíveis são, e csharp para o código C#, vb para visualbasic o código do Visual Basic, vbs para vbscript código VBScript, e c++, mce cpp para código C+C#+.cs
Namespace O namespace que contém a classe de recurso fortemente tipada. O arquivo .resources e a classe de recurso devem ter o mesmo namespace. Para obter informações sobre como especificar o namespace no outputFilenamearquivo binário, consulte Compilando recursos em um arquivo binário. Se o namespace for omitido, a classe de recurso não estará contida em um namespace.
classname O nome da classe de recurso fortemente tipada. Isso deve corresponder ao nome raiz do arquivo .resources. Por exemplo, se Resgen.exe gerar um arquivo .resources chamado MyCompany.Libraryes.Strings.resources, o nome da classe de recurso fortemente tipada será Strings. Se o nome da classe for omitido, a classe gerada será derivada do nome raiz de outputFilename. Se outputFilename for omitido, a classe gerada será derivada do nome raiz de inputFilename.
O nome da classe não pode conter caracteres inválidos, como espaços inseridos. Se o nome da classe contiver espaços inseridos ou se o nome de classe for gerado por padrão a partir de inputFilename e inputFilename contiver espaços inseridos, Resgen.exe substituirá todos os caracteres inválidos por um sublinhado (_).
Filename O nome do arquivo de classe.
/publicclass Torna a classe de recurso fortemente tipada pública em vez de internal (em C#) ou Friend (no Visual Basic). Isso permite que os recursos sejam acessados de fora do assembly no qual estão inseridos.
Importante
Quando você cria uma classe de recurso fortemente tipada, o nome do arquivo .resources deve corresponder ao namespace e ao nome da classe do código gerado. No entanto, Resgen.exe permite especificar opções que produzem um arquivo .resources que tenha um nome incompatível. Para contornar esse comportamento, renomeie o arquivo de saída depois que ele tiver sido gerado.
A classe de recurso fortemente tipada tem os seguintes membros:
Um construtor sem parâmetros, que pode ser usado para instanciar a classe de recurso fortemente tipada.
Uma
staticpropriedade (C#) ouShared(Visual Basic) e somente leituraResourceManager, que retorna a ResourceManager instância que gerencia o recurso fortemente tipado.Uma propriedade estática
Culture, que permite definir a cultura usada para recuperação de recursos. Por padrão, seu valor énull, o que significa que a cultura atual da interface do usuário é usada.Uma
static(C#) ouShared(Visual Basic) e uma propriedade somente leitura para cada recurso no arquivo .resources. O nome da propriedade é o nome do recurso.-
Por exemplo, o comando a seguir compila um arquivo de recurso chamado StringResources.txt em StringResources.resources e gera uma classe nomeada StringResources em um arquivo de código-fonte do Visual Basic chamado StringResources.vb que pode ser usado para acessar o Resource Manager.
resgen StringResources.txt /str:vb,,StringResources