This class represents a dynamic
assembly. A dynamic
assembly is the root container for all the builder objects in the
System.Reflection.Emit namespace. You can create
an AssemblyBuilder object by using the
DefineDynamicAssembly( ) method of the
System.AppDomain class. When you create a dynamic
assembly, specify a name and the access mode, using the
AssemblyBuilderAccess enumeration. If you plan to
save the assembly to disk using the the Save( )
method, be sure to specify
AssemblyBuilderAccess.Save or
AssemblyBuilderAccess.RunAndSave.
A dynamic assembly can contain one or more modules, which are defined
by ModuleBuilder objects. Use the
DefineDynamicModule( ) method to define, create,
and return a ModuleBuilder object, as in
ModuleBuilder myModB =
myAssemblyB.DefineDynamicModule("ModuleName");.
By default, this is a transient module that cannot be saved,
regardless of the AssemblyBuilderAccess specified.
To create a module that can be saved to disk, use a version of the
overloaded DefineDynamicModule( ) that requires a
fileName argument. You can also use other methods
to add an attribute to the assembly, add or create managed and
unmanaged resources, and retrieve a
System.IO.FileStream object for any of the files
in the assembly.
When you are finished creating an assembly and all its members, you
can use the Save( ) method. This method takes a
simple filename as a parameter, which can't include
directory or drive information. To use a different directory or
drive, you must specify the path when you create the dynamic assembly
by using the appropriate constructor. When you save a dynamic
assembly, all nontransient modules are saved using the filename
specified when you created them. By default, the assembly is saved as
a DLL file (as if you had used the /target:library
command-line compiler switch). To change this, use the
SetEntryPoint( ) method to specify the
assembly's startup method and to specify
PEFileKinds.
public sealed class AssemblyBuilder : System.Reflection.Assembly {
// Public Instance Properties
public override string CodeBase{get; }
// overrides System.Reflection.Assembly
public override MethodInfo EntryPoint{get; }
// overrides System.Reflection.Assembly
public override string ImageRuntimeVersion{get; }
// overrides System.Reflection.Assembly
public override string Location{get; }
// overrides System.Reflection.Assembly
// Public Instance Methods
public void AddResourceFile(string name, string fileName);
public void AddResourceFile(string name, string fileName, System.Reflection.ResourceAttributes attribute);
public ModuleBuilder DefineDynamicModule(string name);
public ModuleBuilder DefineDynamicModule(string name, bool emitSymbolInfo);
public ModuleBuilder DefineDynamicModule(string name, string fileName);
public ModuleBuilder DefineDynamicModule(string name, string fileName, bool emitSymbolInfo);
public IResourceWriter DefineResource(string name, string description, string fileName);
public IResourceWriter DefineResource(string name, string description, string fileName,
System.Reflection.ResourceAttributes attribute);
public void DefineUnmanagedResource(byte[ ] resource);
public void DefineUnmanagedResource(string resourceFileName);
public void DefineVersionInfoResource( );
public void DefineVersionInfoResource(string product, string productVersion, string company,
string copyright, string trademark);
public ModuleBuilder GetDynamicModule(string name);
public override Type[ ] GetExportedTypes( );
// overrides System.Reflection.Assembly
public override FileStream GetFile(string name);
// overrides System.Reflection.Assembly
public override FileStream[ ] GetFiles(bool getResourceModules)
// overrides System.Reflection.Assembly
public override ManifestResourceInfo GetManifestResourceInfo(string resourceName)
// overrides System.Reflection.Assembly
public override string[ ] GetManifestResourceNames( );
// overrides System.Reflection.Assembly
public override Stream GetManifestResourceStream(string name)
// overrides System.Reflection.Assembly
public override Stream GetManifestResourceStream(Type type, string name);
// overrides System.Reflection.Assembly
public void Save(string assemblyFileName);
public void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[ ] binaryAttribute);
public void SetCustomAttribute(CustomAttributeBuilder customBuilder);
public void SetEntryPoint(System.Reflection.MethodInfo entryMethod);
public void SetEntryPoint(System.Reflection.MethodInfo entryMethod, PEFileKinds fileKind);
}