在运行时编译的DotNET代码中抛出的异常行数

时间:2009-10-12 02:17:06

标签: c# exception stack-trace line-numbers

this thread不完全相同,但非常接近。

我的程序允许人们输入一些VB或C#代码,这些代码在运行时被编译,加载和执行。我的CompilerParams是:

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

当此代码抛出异常时,我希望能够显示一个消息框,帮助用户调试其代码。异常消息很简单,但行号是我卡住的地方。

我怀疑为了获得行号,我可能需要彻底改变CompilerParameters,甚至可能需要更改这些dll的存储/加载方式。

有没有人知道让这个工作所需的最少步骤?

1 个答案:

答案 0 :(得分:2)

将OutputAssembly设置为临时文件,设置GenerateInMemory = false,IncludeDebugInformation = true
这应该生成符号,并允许您使用代码行获得完整的堆栈跟踪