1

与此线程不完全相同,但非常接近。

我的程序允许人们输入一些在运行时编译、加载和执行的 VB 或 C# 代码。我的编译器参数是:

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

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

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

有谁知道让它工作所需的最少步骤?

4

1 回答 1

2

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

于 2009-10-12T02:28:03.553 回答