/*------------------------------------------------------------------------------*  Copyright (C) 2013 *  版权所有。*  *  文件名:     Compile.cs*  功能說明:   **  創建人:    it_Eric*  創建時間:   2013/10/25 16:19:52*   *  修改人:    *  修改說明:    *
*-----------------------------------------------------------------------------*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.CodeDom.Compiler;
using Microsoft.CSharp;
using System.IO;
using System.Reflection;namespace TestDemo
{public  class Compile{private string prefix = "using System;" +"public static class Driver" +"{" +"public static void Run()" +"{";private string postfix ="}" +"}";public string CompileAndRun(string input, out bool hasError){hasError = false;string returnData = null;CompilerResults results = null;using (var provider = new CSharpCodeProvider()){var options = new CompilerParameters();options.GenerateInMemory = true;var sb = new StringBuilder();sb.Append(prefix);sb.Append(input);sb.Append(postfix);results = provider.CompileAssemblyFromSource(options, sb.ToString());}if (results.Errors.HasErrors){hasError = true;var errorMessage = new StringBuilder();foreach (CompilerError error in results.Errors){errorMessage.AppendFormat("{0}{1}", error.Line, error.ErrorText);returnData = errorMessage.ToString();}}else{TextWriter temp = Console.Out;var writer = new StringWriter();Console.SetOut(writer);Type drivertype = results.CompiledAssembly.GetType("Driver");drivertype.InvokeMember("Run", System.Reflection.BindingFlags.InvokeMethod | BindingFlags.Static | BindingFlags.Public, null, null, null);Console.SetOut(temp);returnData = writer.ToString();}return returnData;}}
}

C#实现动态编译代码相关推荐

  1. python 动态编译代码_使用PyQt(Python+Qt)+动态编译36行代码实现的计算器

    PyQt是基于跨平台的图形界面C++开发工具Qt加Python包装的一个GPL软件(GPL是GNU General Public License的缩写,是GNU通用公共授权非正式的中文翻译),Qt基于 ...

  2. python 动态编译代码_编译Python代码以使用Cython静态链接可执行文...

    经验丰富的问题??显然来自链接器(gcc在引擎盖下启动了一个链接器,看到它 – 只需用详细模式启动带有-v的gcc).那么让我们先简要提醒链接过程如何工作: 链接器保留其需要解析的所有符号的名称.在开 ...

  3. python 动态编译代码,Python:在运行时动态创建函数

    How to dynamically create a function in Python? I saw a few answers here but I couldn't find one whi ...

  4. eclipse编译java项目class文件_动态编译 Java 代码以及生成 Jar 文件

    导读: 最近在看 Flink 源码的时候发现到一段实用的代码,该代码实现了 java 动态编译以及生成 jar 文件.将其进行改进后可以应用到我们的平台上,实现在平台页面上编写 java 代码语句,提 ...

  5. Java脚本引擎执行js代码以及动态编译

    Java脚本引擎执行js代码 一.概述 JAVA脚本引擎是从JDK6.0之后添加的新功能. 使得 Java 应用程序可以通过一套固定的接口与各种脚本引擎交互,从 而达到在 Java 平台上调用各种脚本 ...

  6. QtCreator动态编译jsoncpp完美支持x86和arm平台

    如果是做嵌入式开发. 在Qt下支持JSon最好的办法,可能不是采用qjson这个库.QJson这个库的实例只提供了x86环境下的编译方法. Installing QJson ------------- ...

  7. Java_JAVA6动态编译的问题

    摘自:http://www.iteye.com/problems/14909 在使用JAVA6动态编译时遇到的一个问题,动态编译方法已经写就.通过main方法调用的动态编译时,编译通过,并可以使用编译 ...

  8. 趁周末,来学点进阶知识:Java 动态编译

    来源 | https://zhenbianshu.github.io 问题 之前的文章从Spring 的环境到 Spring Cloud 的配置中提到过,我们在使用 Spring Cloud 进行动态 ...

  9. python动态执行代码_第6.6节 Python动态执行小结

    一.    Python动态执行支持通过输入数据流或文件传入Python源代码串,进行编译后执行,可以通过这种方式扩展Python程序的功能: 二.    动态执行方法可能导致恶意攻击,因此使用时需要 ...

最新文章

  1. 数组的选择--固定大小数组模板array存在的意义!
  2. prometheus下载慢_Prometheus + Grafana 监控 SpringBoot
  3. document.getElementByName()的用法
  4. void main()是错误的
  5. SuperMap iDesktopX _ 高德POI数据下载
  6. 如何构建自己的计算机,第四部分:安装Windows和加载驱动程序
  7. xposed+justTrustme使用与分析
  8. ubuntu系统打开.chm文件方式
  9. .so文件(so文件是什么)
  10. 团队开发之Git管理及使用
  11. 基于粒子群算法的组卷系统的研究与实现
  12. uniGUI获取设备信息
  13. 杨百万:上周四全仓杀入股市 这波反弹不是牛市新起点
  14. java获取jdk存放路径,javac.exe命令文件存放在JDK安装目录的lib目录下。()
  15. surfaceflinger原理讲解
  16. EZDML3.31发布 支持从数据库获取测试数据
  17. SpringMVC操作全攻略
  18. HTML-参考手册: Px、Em 换算工具
  19. 文件包含漏洞及PHP伪协议
  20. 什么是活锁和饥饿?及示例

热门文章

  1. 14、mybatis多表关联查询 association定义关联对象封装规则及懒加载
  2. java B2B2C电子商务平台分析之八--配置中心svn示例和refresh
  3. 单细胞数据初步处理 | drop-seq | QC | 质控 | 正则化 normalization
  4. 关于 React ,npm run build 资源引用丢失
  5. Python3 django2.0 字段加密 解密 AES
  6. 解决ntp的错误 no server suitable for synchronization found
  7. java中Class.getResource用法(用于配置文件的读取)
  8. 【CSS】背景遮罩层各种情况下,CSS样式
  9. 命令2-Create Project Tree
  10. 苹果如果无法弹出⏏️