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

Posted 流星泪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习从.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设置为嵌入的资源

以上是关于学习从.txt文件读取生成编译代码。的主要内容,如果未能解决你的问题,请参考以下文章

一个文件夹下的多个txt文件,然后随机读取其中一个txt文件的内容(java代码)?

从 Zip 文件中的文件中读取内容

java类结合jsp页面怎么把磁盘目录下的文件全部读取出来

如何使用java编写一个从指定的TXT文件每行固定位置抓取数据并生成一个xls表自动保存的程序?

从 .txt 文件中读取数据并在 Python 中计算平均值

从 .txt 文件 C 读取时重复最后一个字符串