アセンブリをディスクに保存したり、実行時に反映したりして、アセンブリを手に入れたいと思っています。アセンブリは、サード パーティによってメモリ内に動的に生成されます。
誰もこれを行う方法を知っていますか?
アセンブリをディスクに保存したり、実行時に反映したりして、アセンブリを手に入れたいと思っています。アセンブリは、サード パーティによってメモリ内に動的に生成されます。
誰もこれを行う方法を知っていますか?
これを試してください(ここにあります):
byte[] dllAsArray;
using (MemoryStream stream = new MemoryStream())
{
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, results.CompiledAssembly);
dllAsArray = stream.ToArray();
}
これを行ってからしばらく経ちましたが、DLL を渡すプログラムはCompilerParameters.GenerateInMemory =True を使用していると思います。
ただし、dll は実際には一時フォルダーのディスクに短時間 (実行中または何か...) 保存されるということです。
当時はこれが問題だったことを覚えていますが、今は詳細を取り戻すのに苦労しています。ちょっと待ってください。おそらく、ProcessExplorer または同様のツールを使用して、どのファイルが保存/タッチされたかを確認できます。
これは、WinDbg で SOS を使用して行うことができます。
問題はモジュールを見つけることです。
手に入れた場合は、モジュール/アセンブリをファイルにダンプする「SaveModule」コマンドがあります。
幸運を :)