На самом деле, ничего сложного. Надо просто указать скрипту генерировать DebugInformation и указать путь к временному файлу с исходным кодом (студия не умеет дебажить исходники с памяти).
Вот пример:
class Program
{
static void Main(string[] args)
{
string scriptFileName = Path.GetTempFileName() + ".cs";
var scriptBody = GenerateScript(scriptFileName);
var script = CSharpScript.Create(
scriptBody,
globalsType: typeof(Globals),
options: ScriptOptions
.Default
.WithEmitDebugInformation(true)
.WithFilePath(scriptFileName)
.WithFileEncoding(Encoding.UTF8));
var sum = script.RunAsync(new Globals {X = 56, Y = 42}).Result.ReturnValue;
Console.Out.WriteLine(sum);
Console.ReadKey();
File.Delete(scriptFileName);
}
private static string GenerateScript(string fileName)
{
var body =
@"var result = X + Y;
return result;
";
File.WriteAllText(fileName, body, Encoding.UTF8);
return body;
}
}
public class Globals
{
public int X { get; set; }
public int Y { get; set; }
}