如何保存存储在内存中的动态生成的程序集?

时间:2009-12-09 08:56:39

标签: c# dynamic-assemblies

我希望通过将其保存到光盘或在运行时反映它来获得装配。程序集由第三方在内存中动态生成。

有谁知道怎么做?

3 个答案:

答案 0 :(得分:2)

试试这个(找到here):

byte[] dllAsArray;

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

    formatter.Serialize(stream, results.CompiledAssembly);

    dllAsArray = stream.ToArray();
}

答案 1 :(得分:1)

我做了这个已经有一段时间了,我猜这个给你DLL的程序使用CompilerParameters.GenerateInMemory = True。

然而,事实上,dll实际上会在某个临时文件夹中保存一段时间(当它运行时还是某些东西......)因为这就是C#编译器的工作方式(工作?)。

我记得当时这对我来说是一个问题,但我现在无法收回细节,给我一点时间。您可以通过ProcessExplorer或类似工具找到它,以查看保存/触摸了哪些文件。

答案 2 :(得分:0)

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

问题是找到模块。

如果您确实开始使用它,则会有一个“SaveModule”命令将模块/程序集转储到文件中。

祝你好运:)