Vou mostrar como atualizar um arquivo de resource do projeto (.resx) utilizando programação.
Para exemplificar, utilizei um projeto Console, então primeiramente crie um projeto do tipo console.
1- Criando um arquivo de resource
Para criar um arquivo de resource no projeto clique com o botão direito do mouse no nome do projeto, escolha a opção “Add” e depois “New Item”.
Na janela que será exibida, escolha a opção “Resources Files” e clique no botão “Add”
O arquivo de resource será adicionado ao projeto e com duplo clique sobre ele, os dados armazenados no resource são exibidos. Note que os itens do arquivo de resource são organizados em grupos: Strings, Images, Icons, Audio, Files e Other.
2- Adicionando manualmente itens no arquivo de resource
Agora, vamos entender como funciona um arquivo de resource.
Crie uma pasta “embeded” e adicione arquivos de diferentes tipos, como a seguir:
Arraste os arquivos de imagens da pasta “embeded” para dentro do grupo “Images” do resource.
Arraste os arquivos de ícones da pasta “embeded” para dentro do grupo “Icons” do resource.
Arraste os demais arquivos da pasta “embeded” para dentro do grupo “Files” do resource.
No grupo “Strings” adicione um texto qualquer para teste
3- Como os itens são armazenados no arquivo de resource
Abrindo o arquivo do resource em modo texto (botão direito sobre o arquivo, opção “Open with” e clique em “XML (Text) Editor”) é possível visualizar como os itens são armazenados no arquivo de resource:
Uma string é armazenada assim:
Um arquivo é armazenado no formato:
Uma imagem assim:
E um ícone assim:
Uma das opções para atualizar o arquivo de resource é abri-lo como se fosse um arquivo XML usando XML Document e adicionar essas referências, mas vamos ver como fazer isso utilizando os objetos da Framework .NET
4- Adicionando uma string ao arquivo de Resource
Primeiramente, faça o seguinte:
Adicione ao projeto a referência a dll: “System.Windows.Forms”
Adicione na classe “using System.IO;”
Adicione na classe “using System.Resources;”
E utilize o seguinte código para adicionar um item de texto ao Resource:
Se você abrir o arquivo do Resource em modo texto novamente, verá que ele foi atualizado e contém a seguinte entrada:
Note que os dados anteriores do arquivo de resource são perdidos. Se você precisar manter os dados anteriores, precisa usar “ResXResourceReader” para ler o arquivo atual e escrever no novo arquivo.
5- Adicionando um arquivo no formato binário
Uma das opções para incluir o conteúdo de um arquivo é adicionar o seu conteúdo binário, para isso, utilize o seguinte código: