Come sostituire le risorse incorporate in un assembly .NET a livello di codice?

Sto cercando di sostituire una risorsa di un file exe (.NET, C #) usando il codice C #.

Ho trovato questo articolo e ho creato questo codice (usando Mono.Cecil 0.6):

AssemblyDefinition asdDefinition = AssemblyFactory.GetAssembly("C:\\File.exe"); EmbeddedResource erTemp = new EmbeddedResource("encFile", ManifestResourceAttributes.Public); erTemp.Data = myNewFileBytes; asdDefinition.MainModule.Resources.RemoveAt(0); asdDefinition.MainModule.Resources.Add(erTemp); AssemblyFactory.SaveAssembly(asdDefinition, "C:\\newFile.exe"); 

Il codice sta effettivamente rimuovendo la risorsa e quindi aggiungendone una nuova con lo stesso nome. Il nome della risorsa è encFile e memorizzato come encFile.exe (provato entrambi).

Ho provato il codice e la rimozione sta funzionando (posso dire dalla dimensione del file) e l’aggiunta, ma il nuovo file si arresta come il file che ho creato solo con la rimozione (per il test) – si comporta come se non può vedere la risorsa sostituita.

Cosa posso fare per sistemarlo? forse alcune modifiche nel file EXE modificato? il file EXE leggeva la sua risorsa in questo modo: byte[] buffer = ProjectName.Properties.Resources.encFile;

prova a controllare l’articolo del progetto in codice sottostante potrebbe essere utile

http://www.codeproject.com/KB/dotnet/embeddedresources.aspx