我希望通过将其保存到光盘或在运行时反映它来获得装配。程序集由第三方在内存中动态生成。
有谁知道怎么做?
答案 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”命令将模块/程序集转储到文件中。
祝你好运:)