从ASP.NET网站编译代码

Dus*_*sty 2 .net asp.net compilation roslyn

我需要在ASP.NET页面上有一个文本框,用户可以在其中粘贴代码并选择一种预设语言(C#,VB.NET,Python,Ruby等),我需要验证代码是否成功编译.如果没有,那么我需要用行号显示错误和警告.

我该怎么做呢?

Dan*_*mov 6

您需要托管您想要支持的各种编译器并使用它们的API.如果编译器没有公开API,则需要使用System.Diagnostics.Process它来启动它并获取输出以进行解析.

尽管如此,这远非一项微不足道的任务.
如果您有信心需要这个,请问自己几个问题.

  • 您打算支持哪些语言,平台和语言?Python和Ruby,你的意思是它们的.NET版本,还是你想使用它们的标准编译器?哪个版本?
  • 这些编译器是否有任何公共API?你需要将它们作为可执行文件运行吗?
  • 如果该站点将被许多用户同时使用,您如何计划分配负载?编译是一个密集的过程,有很多人这样做会使服务器过载.另请注意,编译总是需要时间,因此您需要考虑如何将其呈现给用户.您希望它立即启动还是要将用户放入队列?
  • 什么是用户编码范围?用户输入是限于一个方法内容,还是用户必须写入整个文件?系统默认添加任何代码吗?你如何解决引用,例如C#代码?是否默认引用了一些库?

这只是冰山一角.

回答你的评论,是的,有一个C#和VB .NET的编译器API,叫做CodeDOM.
网上有很多关于它的信息.您可能也想查看这个问题.