
.Net 动态编译(c# 脚本)
发布日期:2021-05-09 07:04:02
浏览次数:11
分类:博客文章
本文共 1121 字,大约阅读时间需要 3 分钟。
1 用.NET提供的类动态编译代码字符串,生成DLL存于内存中,加载到程序域
2 用反射的方式调用这个DLL
将要被编译和执行的代码读入并以字符串方式保存
声明CSharpCodeProvider对象实例调用CSharpCodeProvider实例的CompileAssemblyFromSource方法编译用反射生成被生成对象的实例(Assembly.CreateInstance)调用其方法https://blog.csdn.net/clb929/article/details/51385399
应用:
1 获取编码字符串
string strSourceCode = System.IO.File.ReadAllText("./TextFile1.txt");
2 创建代码生成/编译器访问实例
CSharpCodeProvider objCSharpCodePrivoder = new CSharpCodeProvider();
CompilerParameters objCompilerParameters = new CompilerParameters();
//程序集的引用(程序集路径)
objCompilerParameters.ReferencedAssemblies.Add("System.dll");//是否需要将生成的文件(dll)放入内存
objCompilerParameters.GenerateInMemory = true;
CompilerResults cr = objCSharpCodePrivoder.CompileAssemblyFromSource(objCompilerParameters, strSourceCode);3 通过反射调用刚才加载到内存的库,调用其方法
Assembly objAssembly = cr.CompiledAssembly;
//命名空间.类名称
object objClass = objAssembly.CreateInstance("DyTest.Class1");object[] objCodeParms = new object[1];
objCodeParms[0] = "Allan.";//调用方法
string strResult = (string)objClass.GetType().InvokeMember("Go", BindingFlags.InvokeMethod, null, objClass, objCodeParms);
发表评论
最新留言
表示我来过!
[***.240.166.169]2025年04月10日 17时57分03秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【Python】(十二)IO 文件处理
2019-03-05
vue项目通过vue.config.js配置文件进行proxy反向代理跨域
2019-03-05
android:使用audiotrack 类播放wav文件
2019-03-05
ACM/NCPC2016 C Card Hand Sorting(upc 3028)
2019-03-05
shell编程(六)语言编码规范之(变量)
2019-03-05
vimscript学习笔记(二)预备知识
2019-03-05
Android数据库
2019-03-05
HTML基础,块级元素/行内元素/行内块元素辨析【2分钟掌握】
2019-03-05
23种设计模式一:单例模式
2019-03-05
python-day3 for语句完整使用
2019-03-05
weblogic之cve-2015-4852
2019-03-05
Java注释
2019-03-05
使用mybatis-generator生成底层
2019-03-05
lvs+keepalive构建高可用集群
2019-03-05
6 个 Linux 运维典型问题
2019-03-05
一个系统部署多个tomcat实例
2019-03-05
MySQL-时区导致的时间前后端不一致
2019-03-05
bcolz的新操作
2019-03-06