要在运行时编译 C# 代码,您可以使用 CSharpCodeProvider 类。这是一个用于在 .NET 应用程序中动态编译和执行 C# 代码的示例:
System.CodeDom
和 Microsoft.CSharp
包。您可以使用以下命令安装它们:dotnet add package System.CodeDom
dotnet add package Microsoft.CSharp
using System;
using System.CodeDom.Compiler;
using Microsoft.CSharp;
class RuntimeCompiler
{
static void Main()
{
string code = @"
using System;
namespace RuntimeCompiledNamespace
{
public class RuntimeCompiledClass
{
public static int Add(int a, int b)
{
return a + b;
}
}
}";
CSharpCodeProvider provider = new CSharpCodeProvider();
CompilerResults results = provider.CompileAssemblyFromSource(new CompilerParameters(), code);
if (results.Errors.Count > 0)
{
Console.WriteLine("编译错误:");
foreach (CompilerError error in results.Errors)
{
Console.WriteLine(error.ErrorText);
}
return;
}
Type compiledType = results.CompiledAssembly.GetType("RuntimeCompiledNamespace.RuntimeCompiledClass");
object result = compiledType.GetMethod("Add").Invoke(null, new object[] { 1, 2 });
Console.WriteLine("结果:" + result);
}
}
在这个示例中,我们创建了一个包含 C# 代码的字符串,然后使用 CSharpCodeProvider
类将其编译为一个程序集。接下来,我们从程序集中获取类型和方法,并调用它们以获取结果。
请注意,这个示例仅适用于简单的 C# 代码片段。对于更复杂的项目,您可能需要使用更高级的编译选项和设置。
推荐的腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云