asp.net - 从 ASP.NET 网站编译代码

标签 asp.net .net compilation roslyn

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

我该如何去做呢?

最佳答案

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

但这绝非一项微不足道的任务。
如果您确信需要这个,请问自己几个问题。

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

这只是冰山一角。

回答你的评论,是的,有一个用于 C# 和 VB .NET 的编译器 API,名为 CodeDOM .
网上有很多关于它的信息。您可能想查看this question也是如此。

关于asp.net - 从 ASP.NET 网站编译代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4982818/

相关文章:

c# - 通过 DSL 发送数据的最佳 block 大小是多少

c# - DropDownList 中的 ASP.NET Bind() - 字符串值与 Null

.net - LINQ查询与SQL等效的性能

c# - 当签名相同时调用特定方法

C++ Setprecision 返回错误

c++ - 在 Windows 7 中的 Emacs 上编译和运行 C++

c# - .NET 中的 AOP 和操作过滤器

asp.net - FindControl 在 FormView 的错误模板中查找控件

.net - 版本号是 1.13 > 1.2?

c++ - 如何检查 makefile 中已定义符号(Eclipse-> 路径和符号)的值?