• 生成DLL


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Reflection;
    using System.Reflection.Emit;
    
    namespace EmitDemo
    {
        public class DLLCreator
        {
            public static void Main(string[] arsg)
            {
                var asmName = new AssemblyName("Test");
                var asmBuider = AppDomain.CurrentDomain.DefineDynamicAssembly(asmName, AssemblyBuilderAccess.RunAndSave);
                var mdlbldr = asmBuider.DefineDynamicModule("Hello", "Hello.exe");
                var typebldr = mdlbldr.DefineType("Hello", TypeAttributes.Public);
                var methodbldr = typebldr.DefineMethod("SayHello", MethodAttributes.Public | MethodAttributes.Static, null, null);
                var il = methodbldr.GetILGenerator();
                il.Emit(OpCodes.Ldstr, "Hello ,world");
                il.Emit(OpCodes.Call, typeof(Console).GetMethod("WriteLine", new Type[] { typeof(string) }));
                il.Emit(OpCodes.Call, typeof(Console).GetMethod("ReadLine"));
                il.Emit(OpCodes.Pop);//读入的值会被推送至evaluation stack,而本方法是没有返回值的,因此,需要将栈上的值抛弃    
                il.Emit(OpCodes.Ret);
                var t = typebldr.CreateType();
                asmBuider.SetEntryPoint(t.GetMethod("SayHello"));
                asmBuider.Save("Hello.exe");
            }
        }
    }
  • 相关阅读:
    自定义中间件
    ASP.NET Core后台任务
    Hosted Services+Quartz实现定时任务调度
    .NET Core 中的路径问题
    js Worker 线程
    postMessage解决跨域跨窗口消息传递
    CentOS搭建KMS服务器
    CentOS安装最新Git
    Linux访问https报错
    EntityFramework Core几个基本命令的使用
  • 原文地址:https://www.cnblogs.com/ziranquliu/p/4651173.html
Copyright © 2020-2023  润新知