与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的存储/加载方式。
有没有人知道让这个工作所需的最少步骤?
答案 0 :(得分:2)
将OutputAssembly设置为临时文件,设置GenerateInMemory = false,IncludeDebugInformation = true
这应该生成符号,并允许您使用代码行获得完整的堆栈跟踪