में प्रोग्रामिक रूप से एम्बेड संसाधनों में मेरे पास एक विशिष्ट संसाधन फ़ाइल एम्बेडेड (जिसे 'Script.xml' नाम दिया गया है) के साथ एक संकलित .NET असेंबली है। मुझे इसे दूसरे के लिए प्रोग्रामिक रूप से बदलने की ज़रूरत है।एक .NET असेंबली
क्या स्रोत से पुन: सम्मिलित किए बिना ऐसा करना संभव है?
वर्तमान में, मैं पाठ में एक खोज करता हूं जो मुझे पता है फ़ाइल में है और यह अच्छी तरह से काम करता है। लेकिन मुझे इसे किसी अन्य प्रोजेक्ट के लिए करने की ज़रूरत है जहां मुझे संसाधन फ़ाइल की कोई भी सामग्री नहीं पता है और मुझे एक और तरीका ढूंढना होगा।
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();
यदि आप पीडीबी को सही ढंग से पढ़ने और पुन: उत्पन्न करने के लिए सेसिल का उपयोग करते हैं तो यह पीडीबी को तोड़ नहीं देता है। –
मैं यह मामला होने का अनुमान लगा रहा था, लेकिन 1.5 साल पहले मैं यह नहीं समझ पाया कि इसे कैसे किया जाए। आपके पास कोई उदाहरण है? –
यह पहले से ही काम कर रहा था। लेकिन आजकल नए एपीआई के साथ आप इसे यहां इंगित करना चाहते हैं: https://github.com/jbevain/cecil/wiki/Debug-symbols –