动态创建 Hello World
var myHelloWorldApp = AssemblyDefinition.CreateAssembly( new AssemblyNameDefinition("HelloWorld", new Version(1, 0, 0, 0)), "HelloWorld", ModuleKind.Console); var module = myHelloWorldApp.MainModule; // create the program type and add it to the module var programType = new TypeDefinition("HelloWorld", "Program", Mono.Cecil.TypeAttributes.Class | Mono.Cecil.TypeAttributes.Public, module.TypeSystem.Object); module.Types.Add(programType); // add an empty constructor var ctor = new MethodDefinition(".ctor", Mono.Cecil.MethodAttributes.Public | Mono.Cecil.MethodAttributes.HideBySig | Mono.Cecil.MethodAttributes.SpecialName | Mono.Cecil.MethodAttributes.RTSpecialName, module.TypeSystem.Void); // create the constructor's method body var il = ctor.Body.GetILProcessor(); il.Append(il.Create(OpCodes.Ldarg_0)); // call the base constructor il.Append(il.Create(OpCodes.Call, module.Import(typeof(object).GetConstructor(Array.Empty<Type>())))); il.Append(il.Create(OpCodes.Nop)); il.Append(il.Create(OpCodes.Ret)); programType.Methods.Add(ctor); // define the 'Main' method and add it to 'Program' var mainMethod = new MethodDefinition("Main", Mono.Cecil.MethodAttributes.Public | Mono.Cecil.MethodAttributes.Static, module.TypeSystem.Void); programType.Methods.Add(mainMethod); // add the 'args' parameter var argsParameter = new ParameterDefinition("args", Mono.Cecil.ParameterAttributes.None, module.Import(typeof(string[]))); mainMethod.Parameters.Add(argsParameter); // create the method body il = mainMethod.Body.GetILProcessor(); il.Append(il.Create(OpCodes.Nop)); il.Append(il.Create(OpCodes.Ldstr, "Hello World")); var writeLineMethod = il.Create(OpCodes.Call, module.Import(typeof(Console).GetMethod("WriteLine", new[] { typeof(string) }))); // call the method il.Append(writeLineMethod); il.Append(il.Create(OpCodes.Nop)); il.Append(il.Create(OpCodes.Ret)); // set the entry point and save the module myHelloWorldApp.EntryPoint = mainMethod; myHelloWorldApp.Write("HelloWorld.exe");
桂棹兮兰桨,击空明兮溯流光。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!