几年前有研究过这个类似的东西,实现Javascript里的Eval函数

新发现Roslyn更加好用,以后可以做点好玩的东西了,

研究了一下,记录下来简单的demo

Nuget添加引用Microsoft.CodeAnalysis.CSharp

或者用Package Manager Console命令Install-Package Microsoft.CodeAnalysis.CSharp

测试代码如下var text = @"

public class Calculator

{

public static int Evaluate() { return 3   2 * 55; }

}";

var tree = SyntaxFactory.ParseSyntaxTree(text);

var compilation = CSharpCompilation.Create("calc.dll", new[] { tree },

options: new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary),

//references: new[] { new MetadataFileReference(typeof(object).Assembly.Location) });

references: new[] { MetadataReference.CreateFromFile(typeof(object).Assembly.Location) });

Assembly compiledAssembly;

using (var stream = new MemoryStream())

{

var compileResult = compilation.Emit(stream);

compiledAssembly = Assembly.Load(stream.GetBuffer());

}

var calculatorClass = compiledAssembly.GetType("Calculator");

var evaluateMethod = calculatorClass.GetMethod("Evaluate");

var result = evaluateMethod.Invoke(null, null).ToString();

Console.WriteLine(result);

注意注释部分,这个地方已经有所改变,跟网上存在的方式不太一样了。

roslyn生成html,通过Roslyn将字符串生成可以执行的C#代码相关推荐

  1. json 生成html转换,根据json字符串生成Html的一种方式

    文章说明: 本文介绍了根据Json串生成Html的一种方式(只是简单实现了文本框,密码框,下拉框).只是觉得好玩才这样做,如果觉得没有任何价值,请忽略.不足指出希望各位大牛指点.后续将根据各位的指点继 ...

  2. java读取字符串,生成txt文件

    /*** 读取字符串,生成txt 文件 已解决未设置编码时,在项目中直接打开文件,中文乱码问题* WriteText.writeToText(musicInfo,fileName)直接调用* * @a ...

  3. 【Groovy】json 序列化 ( JsonBuilder 生成器 | 生成带根节点名称的 json 字符串 | 生成不带根节点名称的 json 字符串 )

    文章目录 一.json 生成器 二.代码示例 一.json 生成器 首先 , 创建 json 生成器 . // json 生成器 def jsonBuilder = new JsonBuilder() ...

  4. 将Python字符串生成PDF

    笔者在今天的工作中,遇到了一个需求,那就是如何将Python字符串生成PDF.比如,需要把Python字符串'这是测试文件'生成为PDF, 该PDF中含有文字'这是测试文件'. 经过一番检索,笔者决定 ...

  5. Freemarker基于模板字符串生成静态化html文件

    基于字符串生成静态化文件,就不会通过模板文件.ftl了,也就是项目中压根就不存在模板文件,就是通过用户输入或在配置文件中定义一些模板字符串,基于这些字符串来生成静态化文件. 将字符串转换成模板:

  6. 微信小程序业务-字符串生成二维码(weapp-qrcode)

    微信小程序业务-字符串生成二维码(weapp-qrcode) 前言 邂逅weapp-qrcode 基本使用 详细参数 小程序组件中使用 image属性详解 想使用网络图片? 参考地址 前言 在小程序项 ...

  7. 生成html_听说你不会用Python将字符串生成PDF?来,我教你!

    这是恋习Python推荐的第118篇好文 来源:Python爬虫与算法 作者:jclian   笔者在今天的工作中,遇到了一个需求,那就是如何将Python字符串生成PDF.比如,需要把Python字 ...

  8. php 根据数量创建数组,php实现根据字符串生成对应数组的方法

    本文实例讲述了php实现根据字符串生成对应数组的方法,是比较实用的技巧.分享给大家供大家参考.具体方法如下: 先看看如下示例: $config = array( 'project|page|index ...

  9. MySQL 生成指定长度的随机字符串

    2019独角兽企业重金招聘Python工程师标准>>> 1.生成指定长度英文字符串的函数 DELIMITER $$ create function rand_string (n in ...

  10. C语言利用二叉树的操作实现根据给定的字符串生成二叉树并前序、中序、后序输出二叉树。

    C语言利用二叉树的操作实现根据给定的字符串生成二叉树并前序.中序.后序输出二叉树. Description 根据给定的字符串生成二叉树并前序.中序.后序此二叉树. Input 给定一字符串,其中#表示 ...

最新文章

  1. UNITY 多个子MESH与贴图的对应关系
  2. 有重叠与无重叠序列之序列检测与序列产生
  3. Cervical Cancer mechanism
  4. golang int 转string_Golang的逃逸分析
  5. Windows 技术篇-桌面图标全部消失问题解决方法,windows资源管理器重启实例演示
  6. 获取本机IP地址[JavaScript / Node.js]
  7. Golang二进制转换十进制代码
  8. 【Flink】Flink 的 slotSharingGroup 有什么用
  9. git 无法提交空目录
  10. 数据库:mysql内置功能-函数
  11. cad画流程图的插件_如何用cad画交互流程图
  12. 9个数中取最大值最小值速度问题
  13. Android开发之高德地图导航
  14. 合天网络靶场-大规模网络环境仿真服务平台
  15. 如何挑选微信第三方开发商
  16. Apple Watch使用指南:所有Apple Watch图标和符号含义
  17. DEVC++第五人格V2.0
  18. gitbook 使用粘自csdn
  19. 最新前端开发面试笔试题及答案---图片(面试题系列持续更新中)(8)
  20. maven仓库中查找依赖的步骤

热门文章

  1. idea的设置,导致list长度只有1000
  2. ArcGIS栅格数据图层空间相关性分析方法
  3. Linux内核学习书籍
  4. lcx 通过端口转发实现内网穿透
  5. 【一起学习输入法】华宇拼音输入法开源版本解析(5)
  6. IPv4 + IPv6 = IPv10?是的,IPv10就是IPV4 + IPv6!
  7. 怎样把IPv4转换成IPv6?
  8. HMC5883L校准
  9. Python番外篇:segno模块制作WiFi二维码
  10. java poi html转PDF_实现word转pdf,HTML转pdf(探索篇)