C#怎么在运行时编译并执行代码
时间: 2024-03-15 13:46:45 浏览: 17
在C#中,我们可以使用CSharpCodeProvider类来在运行时编译并执行代码。以下是一个简单的例子:
```csharp
using Microsoft.CSharp;
using System;
using System.CodeDom.Compiler;
using System.Reflection;
class Program
{
static void Main(string[] args)
{
// 1. 创建CSharpCodePrivider对象
CSharpCodeProvider provider = new CSharpCodeProvider();
// 2. 创建编译参数
CompilerParameters parameters = new CompilerParameters();
parameters.GenerateExecutable = false;
parameters.GenerateInMemory = true;
// 3. 编译代码
CompilerResults results = provider.CompileAssemblyFromSource(parameters, @"
using System;
class HelloWorld
{
static void Main()
{
Console.WriteLine(""Hello World"");
}
}
");
// 4. 检查编译是否成功
if (results.Errors.HasErrors)
{
foreach (CompilerError error in results.Errors)
{
Console.WriteLine(error.ErrorText);
}
}
else
{
// 5. 执行代码
Assembly assembly = results.CompiledAssembly;
Type type = assembly.GetType("HelloWorld");
MethodInfo method = type.GetMethod("Main");
method.Invoke(null, null);
}
Console.ReadLine();
}
}
```
这个例子中,我们创建了一个CSharpCodeProvider对象来编译一段简单的代码,并在编译成功后执行它。你可以将代码替换成你需要编译的代码,然后执行它。