我想在内存中创建一个程序集,使用Reflection.Emit
目前,我可以使用
之类的东西创建程序集并获取它的字节AssemblyBuilder builder =
AppDomain.CurrentDomain.DefineDynamicAssembly(...,
AssemblyBuilderAccess.Save);
... create the assembly ...
builder.Save(targetFileName);
using(FileStream fs = File.Open(targetFileName, FileMode.Open))
{
... read the bytes from the file stream ...
}
但是,它是通过在本地文件系统上创建文件来实现的。我实际上并不需要文件,只需要文件中的字节。
是否可以在不编写任何文件的情况下创建程序集?
答案 0 :(得分:3)
目前无法做到这一点。 C#团队正在计划“编译器即服务”功能,希望将其包含在C#5.0中。
答案 1 :(得分:0)
如何调用AssemblyBuilder.GetObjectData
来提供序列化的汇编数据,而不是查找字节?这可能足够好了。
MSDN:http://msdn.microsoft.com/en-us/library/system.reflection.assembly.getobjectdata.aspx
Assembly .. ::。GetObjectData方法
获取序列化信息 需要的所有数据 重新安排此程序集。