2009-10-12 3 views
1

Не совсем то же, что и this thread, но довольно близко.Линейный номер для исключения, сгенерированный во время выполнения кода DotNET

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

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

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

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

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

ответ

2

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

+0

Спасибо Том, я боялся, что был ответ , Теперь мне нужно выяснить, как удалить все эти файлы dll и pdb * после того, как мое приложение отключится ... Любые идеи по этому поводу? –

+1

просто создайте их в каталоге Windows Temp, чтобы окна заботились об этом: Path.GetTempFileName() – TJF

+0

Вот где я их помещаю, но эта папка близка к 1 Gig на моей машине, если кто-то ее заботится, они делая неряшливую работу ... –

Смежные вопросы