Tengo un ensamblado .NET compilado con un archivo de recursos específico incrustado (denominado 'Script.xml'). Necesito cambiarlo programáticamente por otro.Incorporar recursos de forma programada en un ensamblado .NET
¿Esto es posible sin recompilar desde la fuente?
Actualmente, hago una búsqueda de texto que sé que está en el archivo y funciona bien. Pero necesito hacerlo para otro proyecto en el que no conozco ninguno de los contenidos del archivo de recursos y necesito encontrar otro método.
FileStream exe = new FileStream(currentexe, FileMode.Open);
//find xml part of exefile
string find = "<?xml version=\"1.0\"?>";
string lastchars = new string(' ', find.Length);
while (exe.CanRead) {
lastchars = lastchars.Substring(1) + (char)exe.ReadByte();
if (lastchars == find) {
exe.Seek(-find.Length, SeekOrigin.Current);
break;
}
}
//output serialized script
int bytenum = 0;
foreach (byte c in xml) {
if (c == 0) break;
exe.WriteByte(c);
bytenum++;
}
//clean out extra data
while (bytenum++ < ScriptFileSize) {
exe.WriteByte(0x20);
}
exe.Close();
No rompe los PDB si usa Cecil para leer y regenerar correctamente los PDB. –
Estaba adivinando que este sería el caso, pero hace 1.5 años no pude encontrar la manera de hacerlo. ¿Tienes un ejemplo? –
Ya estaba funcionando en ese entonces. Pero hoy en día con las nuevas API lo haría como se indica aquí: https://github.com/jbevain/cecil/wiki/Debug-symbols –