Mit C# Scripting ist es möglich, zur Laufzeit C# Code auszuführen um so die eigene Applikation zu erweitern oder leichter zu debuggen.
An Hand eines kleinen Beispiels wird gezeigt, wie man Programm-Code mit Script-Code verbinden kann.
Hinzufügen des passenden nuGet – Package

Definieren einer Globals-Klasse
Mit folgender Klasse, kann das Script direkt mit der Anwendung, die das Script ausführt, interagieren:
public class API
{
public void WriteToConsole(string input)
{
Console.WriteLine(input);
}
public List<object> GlobalData
{
get;
} = new List<object>();
}
Dabei sind alle Methoden und Properties im auszuführenden Script direkt verfügbar.
Anlegen und Kompilieren des Scripts
Nun muss das Script noch erstellt und kompiliert werden.
string script =
"int x=5;" +
"WriteToConsole(\"Die Zahl: \"+x);" +
"string testString=\"Example\";";
var options = ScriptOptions.Default
.WithReferences(typeof(Type1).Assembly, typeof(Type2).Assembly)
.WithImports("System.Collections.Generic", "System.Linq");
var finalScript = CSharpScript.Create(script, options, typeof(API));
finalScript.Compile();
Ausführen des Scripts
Beim Ausführen des Skriptes kann dann eine Instanz der API mitgegeben werden:
ScriptState<object> result = await finalScript.RunAsync(new API());
Auswerten des Results
Mit Hilfe des Result Objektes kann man dann auf die erstellten Variablen und deren Werte zugreifen:
foreach (var item in result.Variables)
{
Console.WriteLine(item.Name + "=" + item.Value);
}
Sehr zu empfehlen ist auch im offiziellen WiKi des Projektes nachzuschauen: https://github.com/dotnet/roslyn/wiki/Scripting-API-Samples