在netfarmerwork3.5版本的winform下执行string串中的代码
2021-06-04 23:02
标签:dll ring 编译 void div 编译错误 pre get 通过 在netfarmerwork3.5版本的winform下执行string串中的代码 标签:dll ring 编译 void div 编译错误 pre get 通过 原文地址:https://www.cnblogs.com/yxcn/p/14850030.htmlnamespace TestQuestionaire
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void bt_ok_Click(object sender, EventArgs e)
{
StringBuilder sb = new StringBuilder();
sb.Append("using System;");
sb.Append("using System.Text;");
//sb.Append("using Model;");
sb.Append("namespace DynamicCodeGenerate");
sb.Append("{");
sb.Append(" public class HelloWorld ");
sb.Append("{");
sb.Append(" public string OutPut(string value) ");
sb.Append("{");
sb.Append(" return \"Hello World!\"+value; ");
sb.Append("}");
sb.Append("}}");
string code = sb.ToString();
CodeDomProvider provider = CodeDomProvider.CreateProvider("C#");
CSharpCodeProvider objCSharpCodePrivoder = new CSharpCodeProvider();
//添加程序集
CompilerParameters objCompilerParameters = new CompilerParameters();
objCompilerParameters.ReferencedAssemblies.Add("System.dll");
/*
* 第一 要引用要在当前项目中引用Model
* 第二 在拼接代码的时候也要引用命名空间 using Model;
*/
//objCompilerParameters.ReferencedAssemblies.Add("Model.dll");
objCompilerParameters.GenerateExecutable = false;//不生成可执行文件
objCompilerParameters.GenerateInMemory = true;//在内存中输出
CompilerResults cr;
//已过时
// ICodeCompiler objICodeCompiler = objCSharpCodePrivoder.CreateCompiler();
// cr= objICodeCompiler.CompileAssemblyFromSource(objCompilerParameters, GenerateCode());
cr = provider.CompileAssemblyFromSource(objCompilerParameters, code);
if (cr.Errors.HasErrors)
{
//Console.WriteLine("编译错误!");
foreach (CompilerError err in cr.Errors)
{
//Console.WriteLine(err.ErrorText);
}
}
else
{
//通过反射,调用hello world 的实例
Assembly objAssembly = cr.CompiledAssembly;
Object objHelloWorld = objAssembly.CreateInstance("DynamicCodeGenerate.HelloWorld");
MethodInfo objMI = objHelloWorld.GetType().GetMethod("OutPut");
var result = objMI.Invoke(objHelloWorld, new object[] { "jcdd" });
this.rtb_content.Text = result.ToString();
}
}
}
}
下一篇:SSTI漏洞-fastapi
文章标题:在netfarmerwork3.5版本的winform下执行string串中的代码
文章链接:http://soscw.com/index.php/essay/90601.html