Номер строки для исключения, генерируемого в скомпилированном во время выполнения коде DotNET

StackOverflow https://stackoverflow.com/questions/1552398

Вопрос

Не совсем то же самое , что этот поток, но довольно близко.

Моя программа позволяет людям вводить некоторый код на VB или C #, который компилируется, загружается и выполняется во время выполнения.Моими параметрами компилятора являются:

CompilerParameters params = new CompilerParameters();
params.GenerateExecutable = false;
params.GenerateInMemory = true;
params.IncludeDebugInformation = false;
params.TreatWarningsAsErrors = false;
params.WarningLevel = 4;

Когда этот код выдает исключение, я хотел бы иметь возможность отображать окно сообщения, которое помогает пользователям отлаживать свой код.Сообщение об исключении - это просто, но номер строки - это то место, где я застрял.

Я подозреваю, что для того, чтобы получить номер строки, мне, возможно, потребуется кардинально изменить CompilerParameters и, возможно, даже способ хранения / загрузки этих DLL-файлов.

Кто-нибудь знает наименьшие шаги, необходимые для того, чтобы это заработало?

Это было полезно?

Решение

установите OutputAssembly во временный файл, установите GenerateInMemory = false, IncludeDebugInformation = true
Это должно сгенерировать символы и позволить вам получить полную трассировку стека со строками кода

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top