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?