La idea es correr C# como un lenguaje script y esto lo podemos hacer con Roslyn.
Primero, instalamos las dependencias:
dotnet add package Microsoft.CodeAnalysis.Scripting --version 4.9.2
dotnet add package Microsoft.CodeAnalysis.CSharp.Scripting --version 4.9.2
Y con eso ya estamos, podemos hacer esto:
using System;
using Microsoft.CodeAnalysis.CSharp.Scripting;
using Microsoft.CodeAnalysis.Scripting;
class Program
{
static async System.Threading.Tasks.Task Main(string[] args)
{
try
{
// Creamos el script
string code = @"
using System;
public class MyClass
{
public void MyMethod()
{
Console.WriteLine(""Hello from C#!"");
}
}";
// Creamos las opciones (usamos las por defecto)
ScriptOptions options = ScriptOptions.Default;
// Creamos el motor que ejecuta el script
var script = CSharpScript.Create(code, options);
// corremos el script
var result = await script.RunAsync();
// Y chequeamos si hubo error.
if (result.Exception != null)
{
Console.WriteLine("Script execution failed: " + result.Exception.Message);
}
}
catch (Exception ex)
{
Console.WriteLine("Error executing script: " + ex.Message);
}
}
}