using System.Reflection.Emit;
public static class Program
public static void Main()
const string FileName = "MyDynamicLib.dll";
AppDomain currentDomain = AppDomain.CurrentDomain;
AssemblyName assemblyName = new AssemblyName(assemblyName: "MyAssembly");
AssemblyBuilder assemblyBuilder = currentDomain.DefineDynamicAssembly(
access: AssemblyBuilderAccess.RunAndSave
ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule(
TypeBuilder typeBuilder = moduleBuilder.DefineType(
attr: TypeAttributes.Public | TypeAttributes.BeforeFieldInit
ConstructorBuilder constructorBuilder = typeBuilder.DefineConstructor(
attributes : MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.RTSpecialName,
callingConvention: CallingConventions.HasThis | CallingConventions.ExplicitThis,
constructorBuilder.GetILGenerator().Emit(opcode: OpCodes.Ret);
typeBuilder.CreateType();
assemblyFileName : FileName,
portableExecutableKind: PortableExecutableKinds.Required32Bit,
imageFileMachine : ImageFileMachine.I386
Console.WriteLine("Done.");