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