Roslyn-Scripting: Zeilennummerninformationen für Laufzeitausnahmen

Ich spiele mit den Roslyn-Skripten herum (mit demMicrosoft.CodeAnalysis.CSharp.Scripting nuget package) und ich frage mich, ob es eine Möglichkeit gibt, Zeilennummerninformationen zu den Stack-Traces für Ausnahmen hinzuzufügen, die innerhalb eines Skripts auftreten.

Wenn ich den folgenden C # -Code ausführe:

// using Microsoft.CodeAnalysis.CSharp.Scripting;

var code = @"
var a = 0;
var b = 1 / a;
";
try
{
    await CSharpScript.RunAsync(code);
}
catch (DivideByZeroException dbze)
{
    Console.WriteLine(dbze.StackTrace);
}

Der in die Konsole geschriebene Stack-Trace lautet:

   at Submission#0.<<Initialize>>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.CodeAnalysis.Scripting.ScriptExecutionState.<RunSubmissionsAsync>d__9`1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.CodeAnalysis.Scripting.Script`1.<RunSubmissionsAsync>d__21.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at UnitTests.ExploreRoslyn.<ScriptWithRuntimeError>d__4.MoveNext() in D:\dev\misc\netmockery\UnitTests\ExploreRoslyn.cs:line 47

Beachten Sie, dass das Ergebnis ähnlich ist, wenn ich versuche, die Ausnahme innerhalb des Skripts abzufangen:

var code = @"
try  {
    var a = 0;
    var b = 1 / a;
}
catch (System.DivideByZeroException dbze)
{
    Console.WriteLine(dbze.StackTrace);
}
";
await CSharpScript.RunAsync(code);

Diese Ausgaben:

at Submission#0.<<Initialize>>d__0.MoveNext()

Zur Konsole.

Gibt es eine Möglichkeit, die Roslyn-Skript-Engine beim Kompilieren / Ausführen des Skripts Debug-Informationen hinzufügen zu lassen, damit ich Zeilennummerninformationen im Stack-Trace abrufen kann?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage