2009-10-12 51 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

相關問題