特定のリソースファイル(「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();
Cecilを使用してPDBを正しく読み込んで再生成すると、PDBが破損することはありません。 –
私はこれが当てはまると思っていましたが、1.5年前に私はそれをする方法を理解できませんでした。例がありますか? –
それはすでに元気でした。しかし、最近では、あなたが好きにしたいと思う新しいAPIをここに示します:https://github.com/jbevain/cecil/wiki/Debug-symbols –