【学习】从.txt文件读取生成编译代码。

 1  string code = null;
 2                 String projectName = Assembly.GetExecutingAssembly().GetName().Name;
 3                 // 1. 生成要编译的代码。(示例为了简单直接从程序集内的资源中读取)
 4                 Stream stram = Assembly.GetExecutingAssembly()
 5                             .GetManifestResourceStream(projectName + ".code.txt");
 6                 using (StreamReader sr = new StreamReader(stram, Encoding.GetEncoding("GB2312")))
 7                 {
 8                     code = sr.ReadToEnd();
 9                 }
10
11                 //Console.WriteLine(code);
12
13                 // 2. 设置编译参数,主要是指定将要引用哪些程序集
14                 CompilerParameters cp = new CompilerParameters();
15                 cp.GenerateExecutable = false;
16                 cp.GenerateInMemory = true;
17                 cp.ReferencedAssemblies.Add("System.dll");
18
19                 // 3. 获取编译器并编译代码
20                 // 由于我的代码使用了【自动属性】特性,所以需要 C# .3.5版本的编译器。
21                 // 获取与CLR匹配版本的C#编译器可以这样写:CodeDomProvider.CreateProvider("CSharp")
22
23                 Dictionary<string, string> dict = new Dictionary<string, string>();
24                 dict["CompilerVersion"] = "v4.0";
25                 dict["WarnAsError"] = "true";
26
27                 CompilerResults cr = new CSharpCodeProvider(dict).CompileAssemblyFromSource(cp, code);
28
29                 // 4. 检查有没有编译错误
30                 if (cr.Errors != null && cr.Errors.HasErrors)
31                 {
32                     foreach (CompilerError error in cr.Errors)
33                         Console.WriteLine(error.ErrorText);
34
35                     return;
36                 }
37
38                 // 5. 获取编译结果,它是编译后的程序集
39                 Assembly asm = cr.CompiledAssembly;
40
41                 // 6. 找到目标方法,并调用
42                 Type t = asm.GetType("demo.test");
43                 MethodInfo method = t.GetMethod("Main");
44                 method.Invoke(null, null);

控制台源码

 1 using System;
 2 namespace demo
 3 {
 4     public class demoClass
 5     {
 6         public int Id { get; set; }
 7
 8         public string Name;
 9
10         public int Add(int a, int b)
11         {
12             return a + b;
13         }
14     }
15
16     public class test
17     {
18         public static void Main()
19         {
20             Console.WriteLine("ok");
21         }
22     }
23 }

code.txt

注意:需要将code.txt设置为嵌入的资源。

原文地址:https://www.cnblogs.com/Zhengxue/p/8920343.html

时间: 2024-08-29 07:23:59

【学习】从.txt文件读取生成编译代码。的相关文章

Java学习-013-文本文件读取实例源代码(两种数据返回格式)

此文源码主要为应用 Java 读取文本文件内容实例的源代码.若有不足之处,敬请大神指正,不胜感激! 1.读取的文本文件内容以一维数组[LinkedList<String>]的形式返回,源代码如下所示: 1 /** 2 * @function 文本文件操作:读取数据 3 * 4 * @author Aaron.ffp 5 * @version V1.0.0: autoUISelenium main.java.aaron.java.tools FileUtils.java txtRead, 201

java 实现txt文件读取,写入操作实例代码。

一.需求:在txt文件中需要把建表语句的varchar(XXX)里面的XXX乘以4,然后在按照原来的格式进行输出. 需求如下: 转换后如下图: 实现代码如下: package commingming; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; public class

Android学习--Assets资源文件读取及AssetManager介绍

APK安装过程 复制APK安装包到data/app目录下,解压并扫描安装包,把dex文件(Dalvik字节码)保存到dalvik-cache目录,并data/data目录下创建对应的应用数据目录,Android系统在sdcard上为每一个应用分配了存储路径:/sdcard/Android/data/$(应用的包路径),该路径可以通过 context.getExternalFilesDir 得到,一般应用卸载的时候,该目录也会随之被删除. Android资源文件分为两类: 第一种是res目录下存放

cocos2d-x学习笔记——Csv文件读取工具

在一个游戏中,通常会有很多怪物,以及怪物的生命值,魔法值等属性数据,这些数据不可能在代码里面写死,一般都会用配置文件来保存,使用时再加载到内存. 我们常用的配置文件是CSV文件,即逗号分隔值(Comma-Separated Values),如下图所示. 今天,我就来介绍一个来读取CSV文件的工具类--MyCsvUtil. 在接受读取CSV文件工具类之前,先介绍一个读取字符串的工具类--StringUtil. //头文件StringUtil.h #ifndef __StringUtil_H_ #d

H5学习系列之文件读取API--本文转自http://blog.csdn.net/jackfrued/article/details/8967667

HTML5定义了FileReader作为文件API的重要成员用于读取文件,根据W3C的定义,FileReader接口提供了读取文件的方法和包含读取结果的事件模型. FileReader的使用方式非常简单,可以按照如下步骤创建FileReader对象并调用其方法: 1.检测浏览器对FileReader的支持 if(window.FileReader) { var fr = new FileReader(); // add your code here } else { alert("Not sup

python中的requirements.txt文件的生成和使用

程序中必须包含一个 requirements.txt 文件,用于记录所有依赖包及其精确的版本号.如果要在另一台电脑上重新生成虚拟环境. pip 可以使用如下命令自动生成这个文件: (venv) $ pip freeze >requirements.txt 如果你要创建这个虚拟环境的完全副本,可以创建一个新的虚拟环境,并在其上运行以下命令: (venv) $ pip install -r requirements.txt 原文地址:http://blog.51cto.com/13914991/21

UTF-8格式txt文件读取字节前三位问题

今天试着读取一份UTF-8格式的txt文件,内容如下 12345 但是每次读取之后转为String类型,输出字符串长度总是为6,并且第一位打印在控制台后不占任何空间. 经过debug查看字节码后发现,在读取文件后的字节流中,前三位的字节分别是 -17,-69,-65 经过查看资料才发现,这是utf-8格式所带的特殊字节.凡是utf-8格式的文件文件,都会有这三个字节. 这种情况会导致对读取后的字符串进行截取时出现问题. 比如读取日期格式时,内容为2018-09-29 00:00:00,而我想要的

Spark1.6.2 java实现读取txt文件插入MySql数据库代码

package com.gosun.spark1; import java.util.ArrayList;import java.util.List;import java.util.Properties; import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.api.java.JavaSparkContext;import org.apache.spa

Java学习——读写txt文件

package HHH; import java.io.*; import static java.lang.System.out; public class OpenFile { public static void main(String[] args) { // TODO Auto-generated method stub try{ FileInputStream rf = new FileInputStream("openFile.txt"); FileOutputStrea