Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O Gerador de Ficheiros de Recursos (Resgen.exe) converte ficheiros de texto (.txt ou .restext) e ficheiros de formato de recursos baseados em XML (.resx) em ficheiros binários de runtime de linguagem comum (.resources) que podem ser incorporados num executável binário de execução ou assembly de satélite. Para mais informações, consulte Criar ficheiros de recursos.
Resgen.exe é uma utilidade de conversão de recursos de uso geral que realiza as seguintes tarefas:
Converte ficheiros .txt ou .restext em ficheiros .resources ou .resx. (O formato dos ficheiros .restext é idêntico ao dos ficheiros .txt. No entanto, a extensão .restext ajuda-o a identificar mais facilmente ficheiros de texto que contêm definições de recursos.)
Converte ficheiros .resources em texto ou ficheiros .resx.
Converte ficheiros .resx em ficheiros de texto ou .resources.
Extrai os recursos de string de uma assembly para um ficheiro .resw adequado para uso numa aplicação Windows 8.x Store.
Cria uma classe fortemente tipada que fornece acesso a recursos individuais nomeados e à ResourceManager instância.
Se Resgen.exe falhar por qualquer motivo, o valor de retorno é -1.
Para obter ajuda com Resgen.exe, pode usar o seguinte comando, sem opções especificadas, para mostrar a sintaxe e as opções do comando para Resgen.exe:
resgen
Também pode usar o /? interruptor:
resgen /?
Se usar Resgen.exe para gerar ficheiros binários .resources, pode usar um compilador de linguagem para incorporar os ficheiros binários em assemblies executáveis, ou pode usar o Assembly Linker (Al.exe) para os compilar em assemblies satélite.
Esta ferramenta é instalada automaticamente com o Visual Studio. Para executar a ferramenta, utilize o Prompt de Comando do Visual Studio Developer ou o PowerShell do Visual Studio Developer.
No prompt de comandos, escreva 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 interruptor | Description |
|---|---|
/define:
símbolo1[, símbolo2,...] |
A partir do .NET Framework 4.5, suporta compilação condicional em ficheiros de recursos baseados em texto (.txt ou .restext). Se o símbolo corresponder a um símbolo incluído no ficheiro de texto de entrada dentro de uma #ifdef construção, o recurso de string associado é incluído no ficheiro .resources. Se o ficheiro de texto de entrada incluir uma #if ! instrução com um símbolo que não está definida pelo /define switch, o recurso de string associado é incluído no ficheiro de resources./define é ignorado se for usado com ficheiros não textuais. Os símbolos são distintos de maiúsculas e maiúsculas.Para mais informações sobre esta opção, consulte Compilação Condicional de Recursos mais adiante neste tópico. |
useSourcePath |
Especifica que o diretório atual do ficheiro de entrada deve ser usado para resolver caminhos relativos dos ficheiros. |
/compile |
Permite especificar múltiplos ficheiros .resx ou de texto para converter em múltiplos ficheiros .resources numa única operação em massa. Se não especificar esta opção, pode especificar apenas um argumento de ficheiro de entrada. Os ficheiros de saída são chamados filename.resources. Esta opção não pode ser usada com a /str: opção.Para mais informações sobre esta opção, consulte Compilar ou Converter Múltiplos Ficheiros mais adiante neste tópico. |
/r:
assembly
|
Faz referência a metadados da assembleia especificada. É usado na conversão de ficheiros .resx e permite-Resgen.exe serializar ou desserializar recursos de objetos. É semelhante às /reference: opções or /r: dos compiladores C# e Visual Basic. |
filename.extension |
Especifica o nome do ficheiro de entrada a converter. Se estiver a usar a primeira sintaxe de linha de comandos mais longa apresentada antes desta tabela, extension deve ser uma das seguintes:.txt ou .restext Um ficheiro de texto para converter num ficheiro .resources ou .resx. Os ficheiros de texto podem conter apenas recursos em cadeia (string). Para informações sobre o formato de ficheiro, consulte a secção "Recursos em Ficheiros de Texto" de Criar ficheiros de recursos. .resx Um ficheiro de recurso baseado em XML para converter num .resources ou num ficheiro de texto (.txt ou .restext). .recursos Um ficheiro de recurso binário para converter em .resx ou num ficheiro de texto (.txt ou .restext). Se estiver a usar a segunda sintaxe de linha de comandos, mais curta, apresentada antes desta tabela, extension deve ser a seguinte:.exe ou .dll Um assembly do .NET Framework (executável ou biblioteca) cujos recursos em cadeia devem ser extraídos para um ficheiro .resw para uso no desenvolvimento de aplicações da Windows 8.x Store. |
outputFilename.extension |
Especifica o nome e o tipo do ficheiro de recurso a criar. Este argumento é opcional ao converter de um ficheiro .txt, .restext ou .resx para um ficheiro .resources. Se não especificar outputFilename, Resgen.exe adiciona uma extensão .resources à entrada filename e escreve o ficheiro no diretório que contém filename,extension.O outputFilename.extension argumento é obrigatório ao converter a partir de um ficheiro .resources. Especifique um nome de ficheiro com a extensão .resx ao converter um ficheiro .resources num ficheiro de recursos baseado em XML. Especifique um nome de ficheiro com a extensão .txt ou .restext ao converter um ficheiro .resources num ficheiro de texto. Deves converter um ficheiro .resources num ficheiro .txt apenas quando o ficheiro .resources contiver apenas valores de string. |
outputDirectory |
Para aplicações da Windows 8.x Store, especifica o diretório onde será escrito um ficheiro .resw que contém os recursos filename.extension de string.
outputDirectory deve já existir. |
/str:
language[,namespace[,classname[,filename]]]
|
Cria um ficheiro de classe de recurso fortemente tipado na linguagem de programação especificada na language opção.
language pode consistir num dos seguintes literais:- Para C#: c#, cs, ou csharp.- Para Visual Basic: vb ou visualbasic.- Para VBScript: vbs ou vbscript.- Para C++: c++, mc, ou cpp.- Para JavaScript: js, jscript, ou javascript.A namespace opção especifica o namespace padrão do projeto, a classname opção especifica o nome da classe gerada e a filename opção especifica o nome do ficheiro da classe.A /str: opção permite apenas um ficheiro de entrada, por isso não pode ser usado com a /compile opção.Se namespace for especificado mas classname não é, o nome da classe é derivado do nome do ficheiro de saída (por exemplo, os sublinhados são substituídos por pontos). Os recursos fortemente tipados podem não funcionar corretamente como resultado. Para evitar isto, especifique tanto o nome da classe como o nome do ficheiro de saída.Para mais informações sobre esta opção, veja Geração de uma Classe de Recursos Fortemente Tipada mais adiante neste tópico. |
/publicClass |
Cria uma classe de recurso fortemente tipada como classe pública. Por defeito, a classe de recurso está internal em C# e Friend no Visual Basic.Esta opção é ignorada se não for /str: utilizada. |
Resgen.exe e Tipos de Ficheiros de Recursos
Para que Resgen.exe consigam converter recursos com sucesso, os ficheiros de texto e .resx devem seguir o formato correto.
Ficheiros de texto (.txt e .restext)
Ficheiros de texto (.txt ou .restext) podem conter apenas recursos em cadeia de caracteres. Os recursos de cadeias são úteis se estiver a escrever uma aplicação que precisa de ter cadeias traduzidas para várias línguas. Por exemplo, podes facilmente regionalizar cadeias de menu usando o recurso de strings apropriado. Resgen.exe lê ficheiros de texto que contêm pares nome/valor, onde o nome é uma cadeia que descreve o recurso e o valor é a própria cadeia de recursos.
Observação
Para informações sobre o formato dos ficheiros .txt e .restext, consulte a secção "Recursos em Ficheiros de Texto" do Criar ficheiros de recursos.
Um ficheiro de texto que contenha recursos deve ser guardado com codificação UTF-8 ou Unicode (UTF-16), a menos que contenha apenas caracteres no intervalo Basic Latin (até U+007F). Resgen.exe remove caracteres ANSI estendidos quando processa um ficheiro de texto que é guardado usando codificação ANSI.
Resgen.exe verifica o ficheiro de texto para nomes duplicados de recursos. Se o ficheiro de texto contiver nomes duplicados de recursos, Resgen.exe emitirá um aviso e ignorará o segundo valor.
.resx Ficheiros
O formato de ficheiro de recurso .resx consiste em entradas XML. Pode especificar recursos de cadeia dentro destas entradas XML, tal como faria em ficheiros de texto. Uma das principais vantagens dos ficheiros .resx em relação aos ficheiros de texto é que também podes especificar ou incorporar objetos. Quando visualiza um ficheiro .resx, pode ver a forma binária de um objeto embutido (por exemplo, uma imagem) quando essa informação binária faz parte do manifesto do recurso. Tal como acontece com ficheiros de texto, pode abrir um ficheiro .resx com um editor de texto (como Notepad ou Microsoft Word) e escrever, analisar e manipular o seu conteúdo. Note que isto requer um bom conhecimento das etiquetas XML e da estrutura de ficheiros .resx. Para mais detalhes sobre o formato de ficheiro .resx, consulte a secção "Recursos em ficheiros .resx" do Criar ficheiros de recursos.
Para criar um ficheiro .resources que contenha objetos não-string incorporados, deve usar Resgen.exe para converter um ficheiro .resx que contenha objetos ou adicionar os recursos de objeto diretamente ao seu ficheiro a partir do código, chamando os métodos fornecidos pela ResourceWriter classe.
Se o seu ficheiro .resx ou .resources contiver objetos e usar Resgen.exe para o converter em ficheiro de texto, todos os recursos de strings serão convertidos corretamente, mas os tipos de dados dos objetos não-string também serão escritos no ficheiro como strings. Vais perder os objetos embutidos na conversão, e Resgen.exe reportará que ocorreu um erro na recuperação dos recursos.
Conversão entre tipos de ficheiros de recursos
Quando converte entre diferentes tipos de ficheiros de recursos, Resgen.exe pode não conseguir realizar a conversão ou pode perder informação sobre recursos específicos, dependendo dos tipos de ficheiro de origem e destino. A tabela seguinte especifica os tipos de conversões que são bem-sucedidas ao converter de um tipo de ficheiro de recurso para outro.
| Converter de | Para ficheiro de texto | Para .resx | Para .resw | Para .resources |
|---|---|---|---|---|
| Ficheiro de texto (.txt ou .restext) | -- | Sem problemas | Não suportado | Sem problemas |
| ficheiro .resx | A conversão falha se o ficheiro contiver recursos que não sejam string (incluindo ligações de ficheiros) | -- | Não suportado* | Sem problemas |
| ficheiro .resources | A conversão falha se o ficheiro contiver recursos que não sejam string (incluindo ligações de ficheiros) | Sem problemas | Não suportado | -- |
| .exe ou .dll montagem | Não suportado | Não suportado | Apenas os recursos de cadeias (incluindo nomes de caminhos) são reconhecidos como recursos | Não suportado |
*Nas aplicações da Windows 8.x Store, utiliza-se ficheiros .resw para criar recursos. Apesar da diferença na extensão do ficheiro, o formato .resw é idêntico ao .resx, exceto que os ficheiros .resw só podem conter strings e caminhos de ficheiro. Podes converter ficheiros .resx que contêm apenas strings e caminhos em ficheiros .resw simplesmente mudando a extensão do ficheiro.
Realizar Tarefas Resgen.exe Específicas
Pode usar Resgen.exe de várias formas: compilar um ficheiro de recurso baseado em texto ou XML num ficheiro binário, converter entre formatos de ficheiro de recurso e gerar uma classe que envolva ResourceManager funcionalidades e forneça acesso a recursos. Esta secção fornece informações detalhadas sobre cada tarefa:
Compilação de Recursos num Ficheiro Binário
O uso mais comum de Resgen.exe é compilar um ficheiro de recurso baseado em texto (um ficheiro .txt ou .restext) ou um ficheiro de recurso baseado em XML (um ficheiro .resx) num ficheiro binário .resources. O ficheiro de saída pode então ser incorporado numa assembly principal por um compilador de linguagem ou numa assembly satélite pelo Assembly Linker (AL.exe).
A sintaxe para compilar um ficheiro de recurso é:
resgen inputFilename [outputFilename]
onde os parâmetros são:
inputFilename O nome do ficheiro, incluindo a extensão, do ficheiro de recurso a compilar. Resgen.exe compila apenas ficheiros com extensões de .txt, .restext ou .resx.
outputFilename O nome do ficheiro de saída. Se omitir outputFilename, Resgen.exe cria um ficheiro .resources com o nome raiz de inputFilename no mesmo diretório que inputFilename. Se outputFilename incluir um caminho de diretório, o diretório deve existir.
Fornece um namespace totalmente qualificado para o ficheiro .resources especificando-o no nome do ficheiro e separando-o do nome raiz por um ponto. Por exemplo, se outputFilename for MyCompany.Libraries.Strings.resources, o espaço de nomes é MyCompany.Libraries.
O comando seguinte lê os pares nome/valor em Resources.txt e escreve um ficheiro binário .resources chamado Resources.resources. Como o nome do ficheiro de saída não é especificado explicitamente, recebe o mesmo nome do ficheiro de entrada por defeito.
resgen Resources.txt
O comando seguinte lê os pares nome/valor em Resources.restext e escreve um ficheiro binário de recursos chamado StringResources.resources.
resgen Resources.restext StringResources.resources
O comando seguinte lê um ficheiro de entrada baseado em XML chamado Resources.resx e escreve um ficheiro binário .resources chamado Resources.resources.
resgen Resources.resx Resources.resources
Conversão entre tipos de ficheiros de recurso
Para além de compilar ficheiros de recursos baseados em texto ou XML em ficheiros binários .resources, Resgen.exe pode converter qualquer tipo de ficheiro suportado para qualquer outro tipo de ficheiro suportado. Isto significa que pode realizar as seguintes conversões:
.txt e .restext para ficheiros .resx.
.resx para .txt e .restext.
.resources para .txt e .restext.
.resources para .resx.
A sintaxe é a mesma que foi mostrada na secção anterior.
Além disso, pode usar Resgen.exe para converter recursos embutidos numa assembly .NET Framework para ficheiro .resw para aplicações da Windows 8.x Store.
O comando seguinte lê um ficheiro binário de recursos Resources.resources e escreve um ficheiro de saída baseado em XML chamado Resources.resx.
resgen Resources.resources Resources.resx
O comando seguinte lê um ficheiro de recursos baseado em texto chamado StringResources.txt e escreve um ficheiro de recursos baseado em XML chamado LibraryResources.resx. Para além de conter recursos de string, o ficheiro .resx também podia ser usado para armazenar recursos que não fossem string.
resgen StringResources.txt LibraryResources.resx
Os dois comandos seguintes leem um ficheiro de recursos baseado em XML chamado Resources.resx e escrevem ficheiros de texto chamados Resources.txt e Resources.restext. Note que, se o ficheiro .resx contiver quaisquer objetos incorporados, estes não serão convertidos corretamente para ficheiros de texto.
resgen Resources.resx Resources.txt
resgen Resources.resx Resources.restext
Compilação ou Conversão de Múltiplos Ficheiros
Pode usar o /compile switch para converter uma lista de ficheiros de recurso de um formato para outro numa única operação. A sintaxe é:
resgen /compile filename.extension [filename.extension...]
O comando seguinte compila três ficheiros, StringResources.txt, TableResources.resw e ImageResources.resw, em ficheiros .resources separados chamados StringResources.resources, TableResources.resources e ImageResources.resources.
resgen /compile StringResources.txt TableResources.resx ImageResources.resx
Exportar Recursos para um ficheiro .resw
Se está a desenvolver uma aplicação Windows 8.x Store, pode querer usar recursos de uma aplicação de ambiente de trabalho existente. No entanto, os dois tipos de aplicações suportam formatos de ficheiro diferentes. Em aplicações de ambiente de trabalho, recursos em ficheiros de texto (.txt ou .restext) ou .resx são compilados em ficheiros binários .resources. Nas aplicações da Windows 8.x Store, os ficheiros .resw são compilados em ficheiros binários de índice de recursos de pacotes (PRI). Pode usar Resgen.exe para colmatar esta lacuna, extraindo recursos de um executável ou de um assembly de satélite e escrevendo-os num ou mais ficheiros .resw que podem ser usados ao desenvolver uma aplicação Windows 8.x Store.
Importante
O Visual Studio gere automaticamente todas as conversões necessárias para incorporar os recursos numa biblioteca portátil numa aplicação Windows 8.x Store. Usar Resgen.exe diretamente para converter os recursos de um assembly para o formato .resw interessa apenas a programadores que queiram desenvolver uma aplicação da Windows 8.x Store fora do Visual Studio.
A sintaxe para gerar ficheiros .resw a partir de uma assembly é:
resgen filename.extension [outputDirectory]
onde os parâmetros são:
filename.extension O nome de um assembly .NET Framework (um executável ou .DLL). Se o ficheiro não contiver recursos, Resgen.exe não cria ficheiros.
outputDirectory O diretório existente para escrever os ficheiros .resw. Se outputDirectory for omitido, os ficheiros .resw são escritos no diretório atual. Resgen.exe cria um ficheiro .resw para cada ficheiro .resources na assembleia. O nome raiz do ficheiro .resw é o mesmo que o nome raiz do ficheiro .resources.
O comando seguinte cria um ficheiro .resw no diretório Win8Resources para cada ficheiro .resources incorporado em MyApp.exe:
resgen MyApp.exe Win8Resources
Compilação Condicional de Recursos
A partir do .NET Framework 4.5, Resgen.exe suporta compilação condicional de recursos de cadeia em ficheiros de texto (.txt e .restext). Isto permite-lhe usar um único ficheiro de recurso baseado em texto em múltiplas configurações de compilação.
Num ficheiro .txt ou .restext, usas o #ifdef...
#endif construa para incluir um recurso no ficheiro binário .resources se um símbolo estiver definido, e usa a #if !construção ... #endif para incluir um recurso se um símbolo não estiver definido. No momento da compilação, define os símbolos usando a /define: opção seguida de uma lista de símbolos delimitada por vírgulas. A comparação diferencia maiúsculas de minúsculas. O caso dos símbolos definidos por /define deve corresponder ao caso dos símbolos nos ficheiros de texto a serem compilados.
Por exemplo, o ficheiro seguinte chamado UIResources.text inclui um recurso de cadeia chamado AppTitle que pode assumir um de três valores, dependendo se os símbolos têm os nomes PRODUCTION, CONSULT, ou RETAIL estão 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
O ficheiro pode então ser compilado num ficheiro binário .resources com o seguinte comando:
resgen /define:CONSULT UIResources.restext
Isto produz um ficheiro .resources que contém dois recursos de cadeia. O valor do AppTitle recurso é "Gestor de Projetos da Minha Empresa de Consultoria".
Gerando uma classe de recurso fortemente tipada
Resgen.exe suporta recursos fortemente tipados, que encapsulam o acesso aos recursos criando classes que contêm um conjunto de propriedades estáticas de apenas leitura. Isto oferece uma alternativa a chamar diretamente os métodos da ResourceManager classe para recuperar recursos. Pode ativar o suporte a recursos fortemente tipados usando a /str opção em Resgen.exe, que envolve a funcionalidade da StronglyTypedResourceBuilder classe. Quando especificas a /str opção, a saída de Resgen.exe é uma classe que contém propriedades fortemente tipadas que correspondem aos recursos referenciados no parâmetro de entrada. Esta classe fornece acesso apenas de leitura fortemente tipado aos recursos disponíveis no ficheiro processado.
A sintaxe para criar um recurso fortemente tipado é:
resgen inputFilename [outputFilename] /str:language[,namespace,[classname[,filename]]] [/publicClass]
Os parâmetros e interruptores são:
inputFilename O nome do ficheiro, incluindo a extensão, do ficheiro de recurso para o qual gerar uma classe de recurso fortemente tipada. O ficheiro pode ser baseado em texto, em XML ou binário em .resources; Pode ter uma extensão de .txt, .restext, .resw ou .resources.
outputFilename O nome do ficheiro de saída. Se outputFilename incluir um caminho de diretório, o diretório deve existir. Se omitir outputFilename, Resgen.exe cria um ficheiro .resources com o nome raiz de inputFilename no mesmo diretório que inputFilename.
outputFilename pode ser um ficheiro .resources baseado em texto, XML ou binário. Se a extensão de ficheiro de outputFilename for diferente da extensão de inputFilename, Resgen.exe realiza a conversão do ficheiro.
Se inputFilename for um ficheiro .resources, Resgen.exe copia o ficheiro .resources se outputFilename também for um ficheiro .resources. Se outputFilename for omitido, Resgen.exe sobrescreve inputFilename com um ficheiro .resources idêntico.
Idioma A linguagem em que gerar código-fonte para a classe de recurso fortemente tipada. Os valores possíveis são cs, , e csharp para código C#, vb e visualbasic para código Visual Basic, vbs e vbscript para código VBScript, e c++, mc, e cpp para C#código C++.
Espaço de nomes O namespace que contém a classe de recurso fortemente tipada. O ficheiro .resources e a classe resource devem ter o mesmo namespace. Para informações sobre a especificação do namespace no outputFilename, veja Compilar Recursos num Ficheiro Binário. Se o espaço de nomes for omitido, a classe de recurso não está contida num espaço de nomes.
Nome da turma O nome da classe de recursos fortemente tipada. Isto deve corresponder ao nome raiz do ficheiro .resources. Por exemplo, se Resgen.exe gerar um ficheiro .resources chamado MyCompany.Libraries.Strings.resources, o nome da classe de recurso fortemente tipada é Strings. Se o nome da classe for omitido, a classe gerada é derivada do nome raiz de outputFilename. Se outputFilename for omitido, a classe gerada é derivada do nome raiz de inputFilename.
Classname não pode conter caracteres inválidos, como espaços embutidos. Se o nome da classe contiver espaços embutidos, ou se o nome da classe for gerado por defeito a partir de inputFilename, e o nome do inputFicheiro contiver espaços incorporados, Resgen.exe substitui todos os caracteres inválidos por um sublinhado (_).
Nome do ficheiro O nome do ficheiro da classe.
/publicclass Torna a classe de recurso fortemente tipada pública em vez de internal (em C#) ou Friend (no Visual Basic). Isto permite que os recursos sejam acedidos a partir de fora do assembly onde estão embutidos.
Importante
Quando crias uma classe resource fortemente tipada, o nome do teu ficheiro .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 ficheiro .resources com um nome incompatível. Para contornar este comportamento, renomeie o ficheiro de saída depois de ter 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 apenasResourceManagerleitura, que devolve a ResourceManager instância que gere o recurso fortemente tipado.Uma propriedade estática
Culture, que permite definir a cultura usada para a recuperação de recursos. Por defeito, o seu valor énull, o que significa que a cultura atual da interface é utilizada.Uma
staticpropriedade (C#) ouShared(Visual Basic) e apenas leitura para cada recurso no ficheiro .resources. O nome da propriedade é o nome do recurso.-
Por exemplo, o comando seguinte compila um ficheiro de recurso chamado StringResources.txt em StringResources.resources e gera uma classe nomeada StringResources num ficheiro de código-fonte Visual Basic chamado StringResources.vb que pode ser usada para aceder ao Gestor de Recursos.
resgen StringResources.txt /str:vb,,StringResources