J'ai un assembly .NET compilé avec un fichier de ressources spécifique incorporé (nommé 'Script.xml'). J'ai besoin de le changer par programme pour un autre.Intégration programmée de ressources dans un assembly .NET
Est-ce possible sans recompilation de la source?
Actuellement, je fais une recherche de texte que je sais est dans le fichier et cela fonctionne bien. Mais je dois le faire pour un autre projet où je ne connais pas le contenu du fichier de ressources et j'ai besoin de trouver une autre méthode.
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();
Il ne casse pas les PDB si vous utilisez Cecil pour lire correctement et régénérer les PDB. –
Je devinais que c'était le cas, mais il y a 1,5 ans je ne pouvais pas comprendre comment le faire. Avez-vous un exemple? –
Il fonctionnait déjà à l'époque. Mais de nos jours, avec les nouvelles API, vous devriez l'indiquer ici: https://github.com/jbevain/cecil/wiki/Debug-symbols –