Linenumber for Exception, сгенерированный во время выполнения скомпилированного кода DotNET - PullRequest
1 голос
/ 12 октября 2009

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

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

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

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

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

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

1 Ответ

2 голосов
/ 12 октября 2009

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

...