2011-10-14 23 views
5

我在動態編譯代碼,使用CompileAssemblyFromSource與多個來源。.NET CompileAssemblyFromSource:確定哪個源失敗?

如果出現編譯錯誤,我可以從Errors集合中檢索行號等。

但是,行號是所有來源中的行號。我需要的是來自失敗源內的源和行號(在添加的源中)。

這可能沒有計算雜技?

+3

我會考慮使用'CompileAssemblyFromFile'代替(至少作爲一個調試或詳細的選項),這使您能夠在事後查看源代碼並查看發生了什麼。如果你使用臨時文件,你可以隨時清理... –

+1

@Paul這應該是一個答案! –

+0

@Paul:寫入臨時文件我不能使用恐怕。在我的解決方案(具有特定問題)中,來源是從許多個別來源(甚至來自最終用戶)收集的,我只需要查看出現問題的實際來源。 –

回答

0

我在我的一個應用程序中執行此操作,如果出現錯誤,我將編譯的源文件(生成編譯器錯誤的源文件)以及編譯期間生成的所有錯誤消息寫出來。我將這些錯誤消息放在註釋中,並將它們追加到源文件的末尾。如果我沒有記錯的話,源文件在File.WriteAllText()中寫入用戶temp目錄中的一個文件中,然後使用該源模塊的路徑拋出一個異常。所有這些只有在編譯錯誤時纔會發生。如果沒有錯誤,那麼我不會以這種方式寫出源代碼。

在我的情況下,確實只有一個模塊,因爲我將所有源連接到單個模塊。在這種情況下,對於「143線」意味着什麼沒有混淆。

相關問題