在内存中创建程序集

时间:2010-06-14 02:20:27

标签: c# assemblies

我想在内存中创建一个程序集,使用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 ...
}

但是,它是通过在本地文件系统上创建文件来实现的。我实际上并不需要文件,只需要文件中的字节。

是否可以在不编写任何文件的情况下创建程序集?

2 个答案:

答案 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方法
  获取序列化信息   需要的所有数据   重新安排此程序集。