MSIL Hello World

AssemblyName _assemblyName = new AssemblyName();
_assemblyName.Name = "helloWorld";
AssemblyBuilder _assemblyBuilder = Thread.GetDomain().DefineDynamicAssembly(_assemblyName, AssemblyBuilderAccess.RunAndSave);

ModuleBuilder _modBuilder = _assemblyBuilder.DefineDynamicModule(_assemblyName.Name+ ".exe");

TypeBuilder _typeBuilder = _modBuilder.DefineType("Foo");


MethodBuilder _methodBuilder = _typeBuilder.DefineMethod("Main", MethodAttributes.Static, typeof(void), System.Type.EmptyTypes);
ILGenerator _il = _methodBuilder.GetILGenerator();

_il.EmitWriteLine("hello World ");
_il.Emit(OpCodes.Ret);

_typeBuilder.CreateType();
_modBuilder.CreateGlobalFunctions();
_assemblyBuilder.SetEntryPoint(_methodBuilder, PEFileKinds.ConsoleApplication);
_assemblyBuilder.Save(_assemblyName.Name + ".exe");
_il = null;

Comments

Popular posts from this blog

The specified initialization vector (IV) does not match the block size for this algorithm