2009-10-12 64 views
1

this thread不太一样,但非常接近。在运行时编译的DotNET代码中抛出异常的Linenumber

我的程序允许人们输入一些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文件*有关于此的任何想法? – 2009-10-12 02:39:36

+1

只是在Windows Temp目录中创建它们,所以Windows需要照顾它:Path.GetTempFileName() – TJF 2009-10-12 02:45:36

+0

这就是我放置它们的位置,但是该文件夹在我的机器上接近1Gig,如果有人正在照顾它,做一个马虎的工作... – 2009-10-12 02:47:29

相关问题