C# 动态解析编译程序(内存)
2012-09-05 07:15
260 查看
//获取命令内容; string _strCommand = DBCommon.GetAssembleValue((sender as ToolStripMenuItem).Tag.ToString(), 5); //编译器初始化 ICodeCompiler comp = (new CSharpCodeProvider().CreateCompiler()); //编译器参数初始化 CompilerParameters cp = new CompilerParameters(); //加载使用的动态库参数 cp.ReferencedAssemblies.Add("system.dll"); cp.ReferencedAssemblies.Add("system.data.dll"); cp.ReferencedAssemblies.Add("system.xml.dll"); //不生成可执行程序文件 cp.GenerateExecutable = false; //是否在内存中输出 cp.GenerateInMemory = true; //字符串生成 StringBuilder code = new StringBuilder(); //加入引用单元 code.Append("using System; \n"); code.Append("using System.Data; \n"); code.Append("using System.Data.SqlClient; \n"); code.Append("using System.Xml; \n"); code.Append("namespace Smart \n"); code.Append("{ \n"); code.Append(" public class _SmartVisualMachine \n"); code.Append(" { \n"); code.Append(" public static void ExecuteVM() \n"); code.Append(" { \n"); code.Append(" " + _strCommand + " \n"); code.Append(" } \n"); code.Append(" } \n"); code.Append("} \n"); //编译提交 CompilerResults cr = comp.CompileAssemblyFromSource(cp, code.ToString()); //判断是否编译出错。 if (cr.Errors.HasErrors) { StringBuilder error = new StringBuilder(); error.Append("动态编译出错信息: "); foreach (CompilerError err in cr.Errors) { error.AppendFormat("{0}\n", err.ErrorText); } MsgBox.ErrorMsg("动态编译", error.ToString()); } //获取已编译程序集 Assembly assembly = cr.CompiledAssembly; //获取实例 object _Compiled = assembly.CreateInstance("Smart._SmartVisualMachine"); //返回编译后的方法。 MethodInfo mi = _Compiled.GetType().GetMethod("ExecuteVM"); //调用函数 mi.Invoke(_Compiled, null);
好像很多没有引用到~ 只是基本的单元~ 对Dll集不太了解~
相关文章推荐
- 【转】C#生成dll文件:如何用C#编译生成dll文件即动态链接库文件供其它程序调用
- 【IAR】设置和编译信息解析 程序运行耗时 内存分配MAP
- 设置和编译信息解析 程序运行耗时 内存分配MAP
- IAR中设置和编译信息解析 程序运行耗时 内存分配MAP
- C/C++编译的程序占用的内存情况详细解析
- C/C++编译的程序占用的内存解析
- C#编译时提示未能解析引用的程序
- 如何将一段文本编译成C#内存程序的过程
- C#编译时提示未能解析引用的程序(被引用项目编译成功,但引用项目编译时却不能正常引用)
- C/C++编译的程序占用的内存情况详细解析
- C#编译时提示未能解析引用的程序
- c#动态编译,自己做了个c#脚本管理框架,可以作为其他应用的插件使用。增强程序的拓展性
- 一段代码编译成C#内存程序的过程
- 使用C#的AssemblyResolve事件动态解析加载失败的程序集
- CLR学习总结之C#程序的编译与执行
- 让C#语言充当自身脚本!——.NET中的动态编译
- C#动态创建类和使用特性增强程序可扩展性
- C# winform程序中动态菜单的问题
- C#如何限制程序内存使用的大小
- 如何用C#动态编译、执行代码例程