现在的位置: 首页 > 综合 > 正文

C# 动态编译代码

2018年05月04日 ⁄ 综合 ⁄ 共 1017字 ⁄ 字号 评论关闭
/* 
// 使用 C# 动态编译代码和执行 
static void Main(string[] args) 
{ 
// 编译器 
CodeDomProvider cdp = CodeDomProvider.CreateProvider("C#"); 

// 编译器的参数 
CompilerParameters cp = new CompilerParameters(); 
cp.ReferencedAssemblies.Add("System.dll"); 
cp.GenerateExecutable = false; 
cp.GenerateInMemory = true; 

// 编译结果 
CompilerResults cr = cdp.CompileAssemblyFromSource(cp, HelloWorld()); 

if (cr.Errors.HasErrors) Console.WriteLine("编译出错!"); 
else 
{ 
// 编译后的程序集 
Assembly ass = cr.CompiledAssembly; 

// 得到HelloWorld类中的SayHello方法 
Type type = ass.GetType("HelloWorld.HelloWorld"); 
MethodInfo mi = type.GetMethod("SayHello"); 

// 执行 
mi.Invoke(null, null); 
} 
} 

// 动态构建的代码 
static string HelloWorld() 
{ 
StringBuilder sbCode = new StringBuilder(); 
sbCode.AppendLine("using System;"); 
sbCode.AppendLine("namespace HelloWorld"); 
sbCode.AppendLine("{"); 
sbCode.AppendLine(" class HelloWorld"); 
sbCode.AppendLine(" {"); 
sbCode.AppendLine(" public static void SayHello()"); 
sbCode.AppendLine(" {"); 
sbCode.AppendLine(" Console.WriteLine(\"Hello~ World~!\");"); 
sbCode.AppendLine(" }"); 
sbCode.AppendLine(" }"); 
sbCode.AppendLine("}"); 
return sbCode.ToString(); 
} 

抱歉!评论已关闭.