我需要在ASP.NET頁面上有一個文本框,用戶可以粘貼代碼並選擇一種預設語言(C#,VB.NET,Python,Ruby等)和我需要驗證代碼是否成功編譯。如果沒有,那麼我需要用行號顯示錯誤和警告。從ASP.NET網站編譯代碼
我該如何去做這件事?
我需要在ASP.NET頁面上有一個文本框,用戶可以粘貼代碼並選擇一種預設語言(C#,VB.NET,Python,Ruby等)和我需要驗證代碼是否成功編譯。如果沒有,那麼我需要用行號顯示錯誤和警告。從ASP.NET網站編譯代碼
我該如何去做這件事?
您將需要託管各種您希望支持的編譯器並使用它們的API。如果編譯器不公開API,則需要使用System.Diagnostics.Process
來啓動它並獲取輸出以進行解析。
雖然這遠不是一項簡單的任務。
如果你確信你需要這個,問問自己幾個問題。
而這只是冰山一角。
回答您的評論,是的,C#和VB .NET有一個編譯器API,稱爲CodeDOM。
網絡上有大量關於它的信息。您可能還想查看this question。
您可能想看看昨天發佈的http://msdn.microsoft.com/en-us/roslyn的Roslyn項目(以前稱爲編譯器即服務)。這是針對C#和VB的新編譯器API。它不會對Python或Ruby有所幫助,但它應該在C#和VB發佈後發佈(Dev 11之後)。
對於C#和VB,使用Roslyn CTP創建編譯對象,然後調用GetDiagnostics()方法來確定錯誤。
如果我想從C#和VB.NET開始,你碰巧知道API是否暴露給我做編譯? – Dusty 2011-02-13 22:48:26