2010-04-08 2 views
1

В .Net вы можете генерировать байтовый код в памяти и, предположительно, сохранять полученную программу в .exe-файл. Для того, чтобы сделать первый шаг, я следующий код теста адаптировано из http://www.code-magazine.com/Article.aspx?quickid=0301051Генерировать exe в .Net

var name = new AssemblyName(); 
name.Name = "MyAssembly"; 
var ad = Thread.GetDomain(); 
var ab = ad.DefineDynamicAssembly(name, AssemblyBuilderAccess.Run); 
var mb = ab.DefineDynamicModule("MyModule"); 
var theClass = mb.DefineType("MathOps", TypeAttributes.Public); 
var retType = typeof(System.Int32); 
var parms = new Type[2]; 
parms[0] = typeof(System.Int32); 
parms[1] = typeof(System.Int32); 
var meb = theClass.DefineMethod("ReturnSum", MethodAttributes.Public, retType, parms); 
var gen = meb.GetILGenerator(); 
gen.Emit(OpCodes.Ldarg_1); 
gen.Emit(OpCodes.Ldarg_2); 
gen.Emit(OpCodes.Add_Ovf); 
gen.Emit(OpCodes.Stloc_0); 
gen.Emit(OpCodes.Br_S); 
gen.Emit(OpCodes.Ldloc_0); 
gen.Emit(OpCodes.Ret); 
theClass.CreateType(); 

Как вы сделать второй шаг, и сохранить результат в EXE-файл?

ответ

Смежные вопросы