我需要在ASP.NET页面上有一个文本框,用户可以在其中粘贴代码并选择一种预设语言(C#,VB.NET,Python,Ruby等),我需要验证代码是否编译成功。如果没有,那么我需要用行号显示错误和警告。
我该怎么做?
答案 0 :(得分:6)
您需要托管您想要支持和使用其API的各种编译器。如果编译器没有公开API,则需要使用System.Diagnostics.Process
启动它并获取输出以进行解析。
这远非一项微不足道的任务 如果您确信自己需要这个,请问自己几个问题。
这只是冰山一角。
回答您的评论,是的,C#和VB .NET有一个名为CodeDOM的编译器API。
网上有很多关于它的信息。您可能还想查看this question。
答案 1 :(得分:0)
您可能希望查看昨天发布的http://msdn.microsoft.com/en-us/roslyn的Roslyn项目(以前称为编译器即服务)。这是C#和VB的新编译器API。它对Python或Ruby没有帮助,但是一旦发布它就应该做你需要的C#和VB(在Dev 11之后)。
答案 2 :(得分:0)
对于C#和VB,使用Roslyn CTP创建编译对象,然后调用GetDiagnostics()方法来确定错误。