13

我想通过将程序集保存到光盘或在运行时反映它来掌握程序集。程序集由第三方在内存中动态生成。

有谁知道如何做到这一点?

4

3 回答 3

2

试试这个(在这里找到):

byte[] dllAsArray;

using (MemoryStream stream = new MemoryStream())
{
    BinaryFormatter formatter = new BinaryFormatter();

    formatter.Serialize(stream, results.CompiledAssembly);

    dllAsArray = stream.ToArray();
}
于 2013-05-15T12:45:23.387 回答
1

自从我这样做以来已经有一段时间了,我猜向您提供 DLL 的程序使用CompilerParameters.GenerateInMemory =True。

然而,问题是 dll 确实会在某个临时文件夹中的磁盘上保存一小段时间(当它运行或其他东西时......),因为这就是 C# 编译器的工作方式(工作?)。

我记得当时这对我来说是个问题,但我现在无法找回细节,请稍等。您可以使用 ProcessExplorer 或类似工具可能会发现这一点,以查看哪些文件被保存/触摸。

于 2013-05-15T12:56:13.907 回答
0

您可以在 WinDbg 中使用 SOS 执行此操作。

问题是找到模块。

如果您确实掌握了它,那么有一个“SaveModule”命令可以将模块/程序集转储到文件中。

祝你好运 :)

于 2009-12-09T09:18:59.030 回答